node+nodemon+express+swig模板渲染配合使用

使用背景:使用node做后台,express做静态资源访问页面,数据用swig渲染到html

目录结构:

server  #服务配置文件
    server.js  #启动的主文件
    router.js  #页面跳转的路由配置
src  #源码目录
    assets  #资源
        imgs
        css
        js
    pages  #html页面
    index.html  #首页html

1.启动文件server.js

const express = require('express')
// const ejs = require('ejs');
const swig = require('swig')
const appRouter = require('./router.js')
const app = express();

// 配置ejs模板渲染,用ejs.renderFile
// app.set('view cache', false);  
// app.set('views', './src');
// app.set('view engine', 'html'); 
// app.engine('html', ejs.renderFile); 

// 配置swig模板渲染 
app.set('view cache', false); // 设置页面不缓存
app.set('views', './src'); // 这个是设置渲染的目录,只要可以定位到目录就行
app.set('view engine', 'html'); // 设置渲染.html结尾的文件
app.engine('html', swig.renderFile); // 渲染html


// 代理静态资源到assets
app.use('/assets', express.static('src/assets'))
// 使用路由
app.use('/', appRouter)

// 创建服务
const server = app.listen(8090, 'localhost', function () {
  const host = server.address().address;
  const port = server.address().port;
  console.log('> 服务启动完成,访问地址: http://%s:%s/', host, port);
})

2.router.js中配置路由跳转到指定的页面,可以带数据到页面中,在页面中会通过swig的模板渲染出来

const express = require('express')
const appRouter = express.Router();

// 首页
appRouter.get('/index', function (request, response) {
  response.render('index.html', {
    content: '首页'
  })
})
// demo1页面
appRouter.get('/demo1', function (request, response) {
  response.render('page/demo1.html', {
     content: 'demo1页面'
  })
})

module.exports = appRouter

3.swig渲染模板的示例,主要介绍页面取值的方式,页面取值和脚本中绑定变量

1.页面取值用 {{ content }},各种if,for等自行随便百度,一大把。
2.传值到页面中,在脚本里变量绑定传递过来的数据(这个网上基本百度不到)
<script>
    var content = {{ JSON.stringify(content) }}
    console.log(content)

    var myObj = {{ JSON.stringify(myObj) }}
    console.log(myObj.id, myObj.name)

    var myArray = {{ JSON.stringify(myArray) }}
    console.log(myArray[0])

  // 摸索了很多种方式,这里必须要这样写,传值过来不管是对象,字符串,数组,都可以解析为对象,正常的可以取值,注意不要带任何引号,编辑器可能会报错不要管,以上的方式是可以正常取到值的
</script>

4.渲染模板后,每次修改数据都要重启服务,可以用nodemon来做热部署,每次修改文件按保存后就自动重启服务

1.安装nodemon:sudo npm i nodemon -g
2.根目录配置nodemon.json,用nodemon启动时候会自动加载该文件配置
{
  "watch": ["server", "src"], // 监听的目录,可以自己设置
  "ext": "js json html", // 监听目录下的文件后缀,自己定义
  "ignore": ["src/assets/img/"] // 忽略的文件目录
}
3.package.json中配置
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node ./server/server.js",
    "restart": "nodemon ./server/server.js" // 用nodemon启动server文件
  }
4.输入命令:npm restart

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值