html模板引擎,【11】 Express安裝入門與模版引擎ejs

 2023-10-08 阅读 18 评论 0

摘要:前言Express簡介和安裝運行第一個基于express框架的Web模版引擎 ejsexpress項目結構express項目分析 app.set(name,value)app.use([path], function)app.get(name)路由文件index.js 前言   前面也學習了一些Node.js的基本入門知道,現在開始進入Web開發的部分;

前言

  前面也學習了一些Node.js的基本入門知道,現在開始進入Web開發的部分;

  Node.js提供了http模塊,這個模塊中提供了一些底層接口,可以直接使用,但是直接開發網站那還是太累了,所以http模塊也不單講了,可以去看官方API:http://nodejs.org/api/http.html

  下面我們直接從Express框架著手去進行Web開發,它實現好了更高層的接口,讓Web開發更簡單快捷...

簡介和安裝

  Express是一個輕量級、簡潔、易用的Node.js Web MVC開發框架,它基于Node.js原有進行了很多Web開發所需的功能封裝...

html模板引擎。  http://expressjs.com/

  https://www.npmjs.org/package/express

  

  安裝

npm install -g express-generator

靜態模板引擎,  https://github.com/visionmedia/express#quick-start

  -g:表示全局安裝

  

  

?  到此express就在全局環境中安裝成功!

模板引擎教程?  ?PS:用npm安裝有時可能進度不動,多試幾次!

運行第一個基于express框架的Web?

?  1.創建一個testWebApp

express testWebApp

  ?

  2.安裝依賴項

beetl模板引擎。  注意上一步安裝成功后的提示,需要cd到網站目錄,并執行npm install命令安裝項目依賴項(可以在項目的package.json文件的dependencies節點下看到需要哪些依賴

  3.修改app.js文件并運行

  在testWebApp根目錄下找到app.js并增加端口監聽,在sublime中Ctrl+B運行

app.listen(8100,function(){console.log("Server Start!");
});

  

  4.通過瀏覽器訪問,看看效果

template模板引擎怎么用、  

?

  到此成功的運行起來基本express框架的Web!

?

  相關提示:

模板引擎有哪些。  1.在sublime中運行過后,如果想要關閉,去任務管理器中結束node.exe進程

  2.不在sublime中運行,可以在cmd中執行node app,關閉使用快捷鍵Ctrl+C

模版引擎 ejs

  在上面創建的testWebApp中express默認使用的模版擎為jade,個人覺得jade雖然簡潔但不直觀,所以選擇了更易上手的ejs。

  ejs:Embedded JavaScript

  https://github.com/visionmedia/ejs

ejs模板。  1.創建一個express + ejs的項目

express -e testEjsWebApp

cd?testEjsWebApp

npm install

  express參數

復制代碼
  Usage: express [options] [dir]Options:-h, --help          output usage information-V, --version       output the version number-e, --ejs           add ejs engine support (defaults to jade)-H, --hogan         add hogan.js engine support-c, --css <engine>  add stylesheet <engine> support (less|stylus|compass) (d
efaults to plain css)-f, --force         force on non-empty directory  
復制代碼

模板引擎落伍了,  2.創建成功后,打開app.js,添加8100端口監聽

  3.打開routes文件夾下index.js,并修改代碼如下

    

復制代碼
var express = require('express');
var router = express.Router();/* GET home page. */
router.get('/', function(req, res) {res.render('index', { title: '<h1>Express</h1>',users:[{username: 'Wilson'},{username: 'Wilson Zhong'},{username: 'Zhong Wei'}] });
});module.exports = router;
復制代碼

  4.打開views文件夾下index.ejs,并修改代碼如下

  

復制代碼
<!DOCTYPE html>
<html><head>    <link rel='stylesheet' href='/stylesheets/style.css' /></head><body><%= title %><%- title %><% users.forEach(function(user){ %><h6><%= user.username %></h6><% }) %></body>
</html>
復制代碼

layui模板引擎、  5.運行頁面,查看結果

  

?

  在這里,我們還沒有講express的一些東西,所以大家先不要管太多細節部分,只要知道上面示例中當通過http://localhost:8100訪問時,

  會轉到index.js,而index.js而index.ejs傳遞了title和users對象作為參數。

?

  這里重點看看index.ejs

  ejs結尾的文件就是模版文件,可以看到在文件中我們用了三種標簽方式(這種標簽方式有過其它web開發經驗的應該很好看懂)

  1.<%- %>

  這個標簽在接到收到title: '<h1>Express</h1>'時,從顯示效果來看,他直接輸出HTML標簽到頁面上,輸出的是轉義后的變量值

  2.<%= %>?  

  而這個標簽,從顯示效果上看,他沒有直接輸出HTML代碼到頁面上,輸出的是沒有轉義后的變量值

  3.<% %>

  而這個標簽,從顯示上看,他循環了出來參數中的值,標簽中是javascript邏輯代碼,注意括號的開閉合

?

  在這里,簡單認識一下ejs,下面開始看看express的結構!

?

express項目結構

  上面新建了一個叫testEjsWebApp的項目,模版引擎使用的ejs,先看看項目的結構

  

  1.node_modules文件夾

?  這文件夾就是在創建完項目后,cd到項目目錄執行npm install后生成的文件夾,下載了項目需要的依賴項

  2.package.json文件

  此文件是項目的配置文件(可定義應用程序名,版本,依賴項等等)

  node_modules文件夾下的依賴項是從哪里知道的呢?原因就是項目根目錄下的這個package.json文件,執行npm install時會去找此文件中的dependencies,并安裝指定的依賴項

  3.public文件夾(包含images、javascripts、stylesheets)

  這個文件夾做過Web開發的應該一看就知道,為了存放圖片、腳本、樣式等文件的

  4.routes文件夾

  用于存放路由文件,

  5.views文件夾

  用于存放模版文件

express項目分析

  先從app.js看起

  1.app.set(name,value)

  把名字為name的項的值設為value,用于設置參數

  app.set('views', path.join(__dirname, 'views')); ? 設置了模版文件夾的路徑;主要清楚__dirname的意思就可以了,它是node.js中的全局變量,表示取當前執行文件的路徑

  app.set('view engine', 'ejs'); ?設置使用的模版引擎,我們使用的ejs

  2.app.use([path], function)

?  ? 用這個方法來使用中間件,因為express依賴于connect,有大量的中間件,可以通過app.use來使用;path參數可以不填,默認為'/' ?(項目中用到的就不分別解釋了,用到的時候自已查一API的中間件部分)

  app.use(express.static(path.join(__dirname, 'public'))); 這一句中可能要注意一下,express.static( )是處理靜態請求的,設置了public文件,public下所有文件都會以靜態資料文件形式返回(如樣式、腳本、圖片素材等文件)

var routes = require('./routes/index');
var users = require('./routes/users');app.use('/', routes);
app.use('/users', users);

  上面代碼表示當用戶使用/訪問時,調用routes,即routes目錄下的index.js文件,其中.js后綴省略,用/users訪問時,調用routes目錄下users.js文件

  這就是為什么,我們示例中用http://localhost:8100/訪問是,修改的index.js里的文件代碼可以執行(當然index.js文件中也要寫對應的代碼,才能是我們最終看到的效果)

  3.app.get(name)

  獲取名為name的項的值

復制代碼
if (app.get('env') === 'development') {app.use(function(err, req, res, next) {res.status(err.status || 500);res.render('error', {message: err.message,error: err});});
}
復制代碼

  表示如果是開發環境,處理error時會輸出堆棧信息

  4.路由文件index.js

  主要看下面這段代碼

復制代碼
router.get('/', function(req, res) {res.render('index', { title: '<h1>Express</h1>',users:[{username: 'Wilson'},{username: 'Wilson Zhong'},{username: 'Zhong Wei'}] });
});
復制代碼

  這段表示,router.get表示通過get請求/時,響應后面的function處理,兩個參數分別是request、response;

  res.render表示調用模版引擎解析名字index的模板,傳并傳入了title和users兩個對象做為參數;

  為什么它會知道解板views目錄下的index.ejs?而不是其它目錄下的文件,或者后其它后綴名的文件?

  原因就是app.js中的設置:

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

  而這兩個參數在index.ejs中可以使用,那么加上ejs的部分,就會返回最終生成的頁面展現!

?

  到此應該差不多能動手用express+ejs做了一點東西了,入門就先到這里吧!

?

  提示:關于express,還是有必要去看看API,application、request、response、router、middleware還提供了很多方法!

?

作 ? 者:???Porschev[鐘慰]?
出 ? 處:???http://www.cnblogs.com/zhongweiv/?
微 ? 博: ????http://weibo.com/porschev?
歡迎任何形式的轉載,但請務必注明原文詳細鏈接

轉載于:https://www.cnblogs.com/yeziTesting/p/7170559.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/131202.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息