Nodejs in Visual Studio Code 04.Swig模版

1.開始javascript

設置Node_Global:npm config set prefix "C:\Program Files\nodejs"css

Express組件:npm install express -g(全局安裝)html

Express-Generator:npm install express-generator -g(全局安裝)java

若是沒有設置global可能致使express命令在cmd裏面沒法執行node

我接觸過3個模版jade,ejs,swig,最後選擇了swiggit

jade :是express的默認View模版,jade的功能強大(模版繼承、判斷、循環、變量等),然而風格我忍不了,放出來感覺一下;github

extends layout

block content
  h1= title
  p Welcome to #{title}

ejs : 看起來像是html了,風格我喜歡,可是裏面把模版要素和js混用看着很糾結,若是寫到後面很難維護 ,最重要的是功能沒有jade那麼多,棄用緣由2是不支持模版繼承;express

<% if (names.length) { %>  
  <ul>  
    <% names.forEach(function(name){ %>  
      <li foo='<%= name + "'" %>'><%= name %></li>  
    <% }) %>  
  </ul>  
<% } %>  

swig :缺點是搜索結果比ejs、jade少不少,然而支持繼承,功能比ejs強大,又是html風格的,沒有和js混用的缺點,棒棒噠;npm

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>{% block title %}My Site{% endblock %}</title>

  {% block head %}
  <link rel="stylesheet" href="main.css">
  {% endblock %}
</head>
<body>
  {% block content %}{% endblock %}
</body>
</html> 


 
注:上表Swig最強參考 http://paularmstrong.github.io/node-templates/
json

 

2.改造Express默認模版使用swig做爲ViewEngine

 打開CMD使用命令新建一個Express Example

$ cd D:\Libraries\Documents\Visual Studio Code
$ express myapp
 
create : myapp
create : myapp/package.json
......
 
install dependencies:
> cd myapp && npm install
run the app:
> SET DEBUG=myapp:* & npm start

修改package.json文件,將jade替換爲swig

修改app.js將jade viewengine替換爲swig viewengine

修改後:swig ViewEngine

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
//add swig required
var swig = require('swig');

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

var app = express();

// view engine setup -swig
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'tpl');
app.engine('tpl', swig.renderFile);

修改view/layout.jade ,改名爲view/layout.tpl

修改後layout.html

<!DOCTYPE html>
<html>

<head>
    <title>{% block title %} {% endblock %}</title>
    <link rel="stylesheet" href="/stylesheets/style.css">
</head>

<body>
    {% block content %} {% endblock %}
</body>

</html>

修改view/index.jade,改名爲view/index.tpl

修改後index.tpl

{% extends 'layout.tpl' %}

{% block title %}{{ title }}{% endblock %}

{% block content %}
    <h1>{{ title }}</h1>
    <p>Welcome to {{ title }}</p>
{% endblock %}

修改view/error.jade,改名爲view/error.tpl

修改後error.tpl

{% extends 'layout.tpl' %}

{% block title %}{% endblock %}


{% block content %}

  <div class="container">

    <h1>{{ message }}</h1>
    <h2>{{ error.status }}</h2>
    <pre>{{ error.stack }}</pre>

  </div>

{% endblock %}

修改routes/index.js

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Swig Express' });
});

module.exports = router;

修改完成,打開CMD運行項目

$ npm install
swig@1.4.2 node_modules\swig
├── optimist@0.6.1 (wordwrap@0.0.3, minimist@0.0.10)
└── uglify-js@2.4.24 (uglify-to-browserify@1.0.2, async@0.2.10, yargs@3.5.4, source-map@0.1.34)

$ npm start
> myapp@0.0.0 start d:\Libraries\Documents\Visual Studio Code\myapp
> node ./bin/www

源代碼:https://github.com/Mengkzhaoyun/nodepractise

目錄:01.Swig

相關文章
相關標籤/搜索