Node.js是基於chrome V8引擎的javascript的運行環境的後端語言,有着單線程(與js運行機制同樣),支持高併發請求,輕量並且高效的特色,很是適合作服務端渲染.
接下來我就要利用Express框架搭建一個服務端渲染的簡單頁面,Express是一個基於Node.js平臺的極簡、靈活的web 應用開發框架,它提供一系列強大的特性,幫助你建立各類 Web 和移動設備應用javascript
//安裝開發須要的依賴包 npm i express -g 全局安裝 express
var createError = require('http-errors'); // httpError 模塊 var express = require('express'); //導入express var path = require('path'); // Node 自帶模塊 var logger = require('morgan'); // 處理日誌 var indexRouter = require('./routes/index'); // 服務器路由 var app = express(); // 泛指 express 全部的方法和屬性的集合 // view engine setup //設置渲染模板引擎,咱們使用的ejs後端模板 app.set('views', path.join(__dirname, 'views')); // __dirname 根目錄 views 拆分到 根目錄 app.set('view engine', 'ejs'); // 設置模塊引擎 app.use(logger('dev')); // 添加日誌中間件 app.use(express.static(path.join(__dirname, 'public'))); // 靜態目錄 __dirname 根目錄 public 拆分到 根目錄 // 路由中間件 設置路由別名 避免路由命名衝突 app.use('/', indexRouter); // 瀏覽器 中間件別名 + path // 轉發錯誤處理程序 app.use(function(req, res, next) { // next 進入執行下一個中間件 console.log(404); next(createError(404)); }); // error handler錯誤處理 app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); // res.render("./views/error.ejs") res.render('error'); // SSR 服務器端渲染 }); module.exports = app;
var express = require('express'); var router = express.Router(); // app > Router 使用express的路由模塊 // router 路由模塊 // get 請求方式 // req 請求 request // res 響應 response // next 執行下箇中間件 //index屬於文件根目錄,能夠省略爲"/" router.get('/', function(req, res, next) { console.log(req.session); //渲染到具體模板 index.ejs res.render('./index.ejs', { title: '標題', word:"酷酷酷", tag:"<h2>Are you OK???? </h2>", }); });
簡單介紹一下ejs模板語法 <% '腳本' 標籤,用於流程控制,無輸出。 <%= 輸出數據到模板(輸出是轉義HTML標籤不會編譯html標籤) <%- 輸出非轉義的數據到模板(會編譯html標籤 ) <%# ejs 這是註釋的文本... %>
<!DOCTYPE html> <html> <head> <title><%= title %></title> <%- include common %> //這是我以前寫的公共樣式 </head> <body> <%- include('head',{title:'home'})%> <h1><%= title %></h1> <p> <%= word %> </p> <p> <%=msg %> </p> <div> <%- tag %> </div> </body> </html> <script > //js腳本部分能夠在script標籤裏面寫 </script>
"scripts": { "start": "node ./bin/www", }, //啓動cmd窗口,執行npm run start
OK了.html