Express下ejs的视图模板引擎的建立

it2022-05-09  33

 写在前面

由于Express升级到4.0,将ejs的用法忽略,改为用户自定义形式,所以要引入库index.js作为引擎,来支持ejs的模板引擎(点击下载)。

首先是建立一个名字叫nodeitem,引擎为ejs的express模板

$ express  -e nodeitem

$     cd nodeitem

自动安装所指定的依赖

$     npm install                 

$     ls

把index.js文件上传到expand_modules/ejs里面去,上传文件可安装lrzsz

$     tree  expand_modules/

$     vim  app.js

因为我使用的的express3,我的app.js不是入口文件,退出vim

$    cat package.json

我的入口文件是 ./bin/www,想要修改也不难,只需要在app.js文件里添加如下代码即可

 app.set("port",process.env.PORT || 3000);   http.createServer(app).listen(app.get("port"),function (){   console.log("this is"+app.get("port"));   })

    $    node app.js 

   建立模板

 $     vim  app.js

//引入引擎 var engine = require("./expand_modules/ejs/index.js"); //改变中间量及参数 app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.set("port",process.env.PORT || 2000); app.use(favicon()); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded()); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use(app.router); //在app中调用engine函数改造引擎,模板引擎在显示层的名字叫layout.ejs app.engine("ejs",engine); app.locals._layoutFile="layout"; //路由控制w app.get('/', routes.index); app.get("/abc",routes.abc); app.get("/u/:user",routes.user); app.get("/post",routes.post) app.get("/reg",routes.reg); app.get("/doReg",routes.doReg); app.get("/login",routes.login); app.get("/doLogin",routes.doLogin); app.get("/logout",routes.logout); app.get('/users', users.list);

    路由选择

       $     cd routes && vim index.js

  

  查看显示层

  $     cd views  &&  ls 

      

   $    vim layout.js

   ejs文件类似于html文件,只需要在html文件的<body>标签里面加入自己设置的模板元素即可。下面是一个例子,最关键的是要在<body>标签里面加入<%-body%>  为了显示原始HTML内容

   

  $     vim  login.ejs

      

   只需要把你想要添加到layout模板里面的html文件的<body>标签内容写入ejs文件即可   模板layout中<%-body%> 会自动解析为html,并予以显示。上面文件只是一个例子。

  写在最后

     ejs引擎书写方式特别像html,但是他有一个缺点就是不支持模板继承,想要模板继承可以使用jada引擎。要想知道两者更加详细的区别,这是飞机票。

   

转载于:https://www.cnblogs.com/dirkhe/p/6847407.html


最新回复(0)