在node.js中使用引擎模板:

art-template不仅在浏览器可以使用,也可以在node中使用,并且模板引擎起早诞生于服务器领域,在node中使用模板引擎:

1.安装:在一个文件目录下执行命令:npm install art-template

2.在需要使用的文件模块中使用require方法加载:art-template即可。

3.查阅文档,使用引擎模板API,如:

 <!--简单原理,下面是tpl.html模板:--><!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>{{ title }}</title></head><body><p>大家好,我叫:{{ name }}</p><p>我今年 {{ age }} 岁了</p><h1>我来自 {{ province }}</h1><p>我喜欢:{{each hobbies}} {{ $value }} {{/each}}</p></body></html><!--将上面的模板使用下面的值渲染:-->var template = require('art-template');var fs = require('fs');fs.readFile('./tpl.html', function(error, data) {if (error) {return console.log('文件读取失败');};var ret = template.render(data.toString(), { //.render()渲染模板:第一参数表示定义好的模板(字符串型);第二个参数为对象,表示模板中变量的值name: 'Jack',age: 18,province: '深圳市',hobbies: ['打游戏','听歌','睡觉'],title: '个人信息'});console.log(ret); //将渲染的数据打印出来,这里可以通过http模块响应给浏览器等});<!--下面案例实现将数据渲染并响应给浏览器:-->var http = require('http');var fs = require('fs');var server = http.createServer();var urldir = 'E:/web前端/web前端笔记/11.node/11.像Apache一样打印目录结构/www';server.on('request', function(request, response) {fs.readFile('./template.html', function(erro, data) {if (erro) {return response.end('404 Not Found.');};fs.readdir(urldir, function(error, files) {if (error) {return response.end('Can not find www dir.');};var content = '';files.forEach(function(item) { //遍历目录结构files,并动态的把数组的每一项拼接到content中,content在这里就是模块content += `<tr><td><a href="">${item}/</a></td></tr>`});data = data.toString(); //二进制数据转换为字符串data = data.replace('str', content); //遍历后的content数据替换模板中的str,在这里str就是html页面中的一个字符,使用替换的方式将上面的数据替换到html页面中response.end(data); //响应给浏览器,data数据实际就是字符串});});});server.listen(4000, function() {console.log('running...')});

exports和module.exports:

1.在node中每个模块中默认有一个module,该module中有一个成员:exports ,代码底层最后有一句:return module.exports,如:

  var module = {exports:{}};return module.exports;

2.exports 是module.exports的一个引用,可以简化书写,在模块中 exports === module.exports,但是导出一个成员的时候是使用:module.exports = ‘新的值’,而不是使用exports = ‘新的值’,因为exports只是module.exports的一个引用,模块底层最终: return module.exports

3.重新建立引用关系:exports = module.exports,重新建立引用关系后,exports和module.exports的指向相同。

在一个node.js文件中载入另一node.js文件并使用其中的变量:

在node中没有全局作用域,只有模块作用域,超出作用域无效,外部访问不到内部,内部也访问不到外部;如:在a.js中定义的str变量默认是不能在被载入a.js的b.js文件中访问到。

有的时候使用一个模块的目的不仅是执行这个模块这么简单,还需要拿到里面的成员,此时可以使用require的对象:export.对象名即可导出某模块,这样就能访问到另一个模块中的变量了,如:

 // 默认模块间的变量是不能互相访问的:const b = require('./b.js'); //b.js文件中定义了变量str;(在被载入时后缀名是可以省略的,但是在自定义模块中路径需要注意,即使在同文件夹中也要严格,如这里需要加./)// console.log(str); //ReferenceError: str is not defined// const numstr = '123'; //在b文件中访问numstr返回:numstr is not defined// 将另一个模块导入来访问另一个模块中的变量:console.log(b.str); //在另一个模块中使用:exports.名称 = 变量名 来导出一个变量;在本文件中使用载入模块的变量.名称即可访问到另一模块中的变量console.log(b.name);

package.json文件:

用来描述一个项目中所引用的第三方包,当一个项目被下载下来后。如果是将包定义在了package.json文件,那么需要npm install先下载第三方依赖。这样可以节约空间,其指定包的配置为dependencies;如果一个包需要配置到package.json中,那么安装的时候需要在后面加–save,如:

  {"name": "express-demo","version": "1.0.0","description": "","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1"},"keywords": [],"author": "","license": "ISC","dependencies": {"express": "^4.16.2"}}属性说明:name - 包名version - 包的版本号description - 包的描述homepage - 包的官网 urlauthor - 包的作者姓名contributors - 包的其他贡献者姓名dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上main - main 字段指定了程序的主入口文件,require('moduleName') 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.jskeywords - 关键字手动生成package.json文件:npm init

提示:本文图片等素材来源于网络,若有侵权,请发邮件至邮箱:810665436@qq.com联系笔者删除。
笔者:苦海

node中模板引擎、模块导出、package.json简介相关推荐

  1. Nodejs 中的包、npm 、第三方模块、 package.json 以及 cnpm

    一.包与 NPM 包Nodejs 中除了它自己提供的核心模块外,我们可以自定义模块,也可以使用第三方的 模块.Nodejs 中第三方模块由包组成,可以通过包来对一组具有相互依赖关系的模块进行 统一管理 ...

  2. 关于 underscore 中模板引擎的应用示例

    //关于 underscore 中模板引擎的应用示例 <!doctype html> <html> <head> <meta charset="ut ...

  3. 模块加载及第三方包:Node.js模块化开发、系统模块、第三方模块、package.json文件、Node.js中模块的加载机制、开发环境与生产环境、cookie与session

    1.Node.js模块化开发 1.1 JavaScript开发弊端 JavaScript 在使用时存在两大问题,文件依赖和命名冲突. 1.2 软件中的模块化开发 一个功能就是一个模块,多个模块可以组成 ...

  4. 5.Nodejs中的包、npm、第三方模块、package.json以及cnpm

    1.包 Nodejs中除了它自己提供的核心模块(内置模块)外,我们可以自定义模块 ,也可以使用第三方模块.Nodejs中的第三方模块由包组成,它可以通过包来对一组具有相互依赖关系的模块进行统一管理. ...

  5. node+ejs模板引擎的应用

    前言: 最近在开发一个关于后台管理系统的基础开发平台,解释一下就是不管什么管理系统都有一些相同的功能,但是又有一些细节不一样,这个基础平台就是实现对于基础功能可以进行快速开发,主要有自定义的生成功能代 ...

  6. Node.js模板引擎: Jade入门

    Jade是Node.js的一个模板引擎,它借鉴了Haml的很多地方,所以语法上和Haml比较相近.并且,Jade也支持空格. 1.标签 在Jade里,一行开头的任何文本都被默认解释成HTML标签.并且 ...

  7. SpringBoot中模板引擎thymeleaf

    首先我们用SpringBoot创建一个支持thymeleaf的web项目 添加web支持 添加thymeleaf模板引擎 创建好该项目之后,在templates目录下创建一个普通的html文件,这个时 ...

  8. html中模板引擎—前端与后端

    模板引擎 模板引擎 起到 数据和视图分离的作用, 模板对应视图, 关注如何展示数据, 在模板外头准备的数据, 关注那些数据可以被展示. 后端模板引擎 freemarker 如下介绍,  java后台的 ...

  9. nodejs---express中模板引擎consolidate及路由route简单使用总结

    consolidate是express中的一个模板引擎的结合体.包括了常用的jade和ejs. 配置模板引擎及使用方法如下: 1.模板引入----const consolidate = require ...

最新文章

  1. Facebook 发布深度学习工具包 PyTorch Hub,让论文复现变得更容易
  2. 微信小程序 app.js 操作 页面js方法
  3. ppt流程图字体太小_简单三步,用WPS轻松完成一个又大气又好看的流程图!
  4. php执行函数吗_php函数system
  5. delphi 中文转 ascii编码_【转】Python 中文编码
  6. 05月08日 学习列表
  7. 初识SONiC,官方文档
  8. Atitit 知识管理之 经济学概论 attilax 学习心得
  9. zen brush 2 android,Zen Brush 2 才不仅仅是个练字 App 那么简单
  10. 维克多DBC文件结构
  11. 腾讯云 短信 简单使用
  12. Aggressive cows
  13. mysql 身份证计算年龄_mysql根据身份证号获得年龄并对年龄进行分组查询在MyBatis中的应用...
  14. 将Firefox浏览器的Google工具栏拖动到浏览器底部
  15. FusionAccess桌面云模板制作
  16. Nginx配置Https 443 端口
  17. 服务器终端性能测试之MBW内存测试
  18. 基于Springboot的社区志愿者服务管理系统
  19. 4.19 C语言练习(已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中)
  20. Asus Prime B360M-A+i5-8400+RX 570 黑苹果efi引导文件

热门文章

  1. wpf xaml突然不能自动补齐代码_Xaml+C#桌面客户端跨平台初体验
  2. python里面的函数
  3. deepin安装java_Deepin安装Eclipse
  4. java基础代码实例_基础篇:详解JAVA对象实例化过程
  5. grpc服务器和客户端互传数据
  6. Fiddler Everywhere全平台抓包调试工具安装和使用(一)
  7. 【Jmeter篇】1小时轻松搞定项目接口自动化测试与数据驱动
  8. 在elementUI中使用 el-autocomplete 实现远程搜索的下拉框
  9. POJ 3614 Sunscreen
  10. /usr/bin/python^M: 解释器错误: 没有那个文件或目录