1. 定制一个包并且引用此包.

    目录结构:

    nodejs学习笔记_第1张图片


    假定此包的作用是用来处理字符串转整型,整型车字符串的工具包.

    那么,需要先写2个js文件,这2个文件就是做类型转换工作的模块,并且将其放到utils/libs目录下.

    str2int.js

    nodejs学习笔记_第2张图片

    int2str.js

    nodejs学习笔记_第3张图片

    好了,功能写完了.我们还需要写一个包的入口程序,那就是main.js,放在功能模块同目录下

    nodejs学习笔记_第4张图片

    当然,这样还不行,因为我们还需要一个package.json来指定此包的入口程序,这是由程序员自己定义,更加灵活,当然如果你不想写package.json.也可以将前面的包入口程序main.js改为index.js(小插曲,这里我采用的是自己定义).此文件需要放至到utils目录下,也就是与libs是兄弟级关系.


    package.json

    nodejs学习笔记_第5张图片


    至此,我们的包就定义好了,节下来我们来看看怎么使用它吧.

      test.js

     nodejs学习笔记_第6张图片

  输出结果:

      nodejs学习笔记_第7张图片

    

2.Express模板引用之xTemplate模板引擎使用.

  在当前项目目录下执行

  cnpm install xtpl xtemplate --save


 修改app.js

app.set('view engine','xtpl')
app.engine('html', require('xtpl').__express);
app.set('view engine', 'html');
这样,我们的views目录里就可以使用x.html的扩展名了.而且还可以支持模板之间的引用.


nodejs学习笔记_第8张图片

base.html是基础模板,供其它继承.




    
    {{title}}
    
    {{{block('styles')}}}


    
        
            

{{title}}

        
    
    
        {{{block('body')}}}     
{{{block('scripts')}}}

index.html继承之base.html

{{extend('./layout/base')}}
{{#block('body')}}

express xtpl解析引擎
{{/block}}

路由控制routes/index.js

var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express by jacky' });
});
module.exports = router;

使用supervisor bin/www启动后

访问http://127.0.0.1:3000/

nodejs学习笔记_第9张图片


3.Express模板引用之nunjucks模板引擎使用.

  因为我习惯使用django默认模板引擎jinja,就从网上找到nunjucks,它可以满足我的需求,故在这里记录下.

 在当前项目目录下执行

  cnpm install nunjucks  --save


 修改app.js

const nunjucks  = require('nunjucks');
app.set('view engine','njk');
nunjucks.configure('views',{autoescape:true,express:app});
app.set('view engine', 'html');

这样,我们的views目录里就可以使用x.html的扩展名了.而且还可以支持模板之间的引用.

nodejs学习笔记_第10张图片

base.html是基础模板,供其它继承.




    
    
    
    {% block title %} 首页 {% endblock %} - nunjucks演示
    
    {% block custom_css %} {% endblock %}



    

Header

    
    
        {% block main %}  {% endblock %}         {% block footer %}         
        
                     Footer  - by opdevos