node中模板引擎、模块导出、package.json简介

在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联系笔者删除。
笔者:苦海

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575312.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

富爸爸穷爸爸

推荐大家看看&#xff0c;虽然我只看了第一章&#xff0c;但是我觉得写的确实挺好的&#xff0c;也确实符合这个社会规律。 老实本分的工作已经是过去式了。为自己工作才是出路。转载于:https://www.cnblogs.com/joysky/p/3909127.html

Java和C++在细节上的差异(转)

Java的基本程序结构、关键字、操作符都和C/C非常相似&#xff0c;以下为主要的几点区别: 一、基本程序设计结构&#xff1a; Java的基本程序结构、关键字、操作符都和C/C非常相似&#xff0c;以下为主要的几点区别&#xff1a; 1. Java的原始数值型数据类型中不包含无符号类型&…

文件路径和模块路径、nodemon工具

文件路径和模块路径&#xff1a; //在文件操作相对路径中&#xff0c;前面的 ./ 可以省略&#xff0c;但是 在模块标识路径中 &#xff0c;前面的 ./ 不能省略。// ./-----表示相对于当前目录 /-------当前文件所属磁盘根目录 var fs require(fs);fs.readFile(t…

Express框架简介、express使用模块引擎、模式数据

Express简介&#xff1a; 原生的http不足以应对我们的开发需求&#xff0c;所以我们需要使用框架来加快我们的开发&#xff0c;这里推荐expressjs&#xff0c;其官网&#xff1a;expressjs.com&#xff0c;中文文档推荐&#xff1a;http://javascript.ruanyifeng.com/nodejs/e…

数据库字段关联更新

MS SQL Server 子查询更新&#xff1a; update log set uin b.uin from log a,logs b where a.accountuin b.accountuin mysql 更新&#xff1a; update t_stat_month_user a INNER JOIN t_dept b on a.op_deptb.op_id set a.dept_short_nameb.dept_short_name;转载于:https:/…

浏览器基础知识

Web浏览器的主要功能是展示网页资源&#xff0c;即请求服务器并将结果展示在窗口中。工作原理大概如下&#xff1a; 地址栏输入URL 浏览器根据输入的URL查找域名的IP地址&#xff0c;DNS查找过程如下&#xff1a; 浏览器缓存——浏览器会缓存DNS记录一段时间&#xff0c;不同浏…

MongoDB简介、在node中使用MongoDB

MongoDB数据库简介&#xff1a; 使用MongoDB的好处是不用SQL语句&#xff0c;它提供了对应的API&#xff0c;其功能和MYSQL基本相同&#xff0c;是最像关系型数据库的非关系型数据库&#xff1b;不需要设计表的结构&#xff0c;文档相当于json&#xff0c;如果想要了解更多&am…

喜用神最正确的算法_各种电磁仿真算法的优缺点和适用范围(FDTD, FEM和MOM等)...

从实际工程应用的角度谈一下我对这几种算法的理解。先说结论&#xff0c;FDTD算的快但是不精确&#xff0c;可以用来算电大尺寸的物体&#xff0c;要是一个物体的尺寸大于10个波长&#xff0c;一般的服务站是跑不动FEM的&#xff0c;那必须得用FDTD了。FEM最经典的电磁仿真软件…

Linux下实现自动设置SSH代理

SSH的巨大价值体现在能够配置为代理服务器上。不像在Windows下每次还需要手动登录设置&#xff0c;Linux有很好的工具链能够实现自动设置SSH代理&#xff0c;就是expect和ssh的联合使用&#xff0c;再加上proxychains&#xff0c;任何程序都可以享用代理了&#xff0c;在此我简…

node中操作MySQL

node操作MySQL数据库&#xff1a; 在node中操作MySQL数据库的基本流程如下&#xff1a; // node操作MySQL需要在npm官网下载mysql包并载入node执行代码&#xff1a;// 1.载入MySQL数据库包var mysql require(mysql);// 2.创建连接&#xff1a;var connection mysql.createCo…

百度UEditor编辑器使用(二)

本文摘自&#xff1a;http://www.cnblogs.com/pmpen/archive/2011/09/19/2181811.html 首先感谢分享 百度WEB前端设计部推出一款开源的编辑器UEditor http://ueditor.baidu.com/index.html &#xff0c;这款编辑器相当强大&#xff0c;它提供了百度地图&#xff0c;google地图…

护士资格证延续注册WEB服务调用失败_服务熔断

熔断机制是应对服务雪崩效应的一种微服务链路保护机制&#xff0c;当扇出链路的某个微服务不可用或者响应时间太长时&#xff0c;会进行服务的降级&#xff0c;进而熔断该节点微服务的调用&#xff0c;快速返回”错误”的响应信息。当检测到该节点微服务响应正常后恢复调用链路…

AssetManager asset的使用

Android 系统为每一个新设计的程序提供了/assets文件夹&#xff0c;这个文件夹保存的文件能够打包在程序里。/res 和/assets的不同点是&#xff0c;android不为/assets下的文件生成ID。假设使用/assets下的文件&#xff0c;须要指定文件的路径和文件名称。以下这个样例&#xf…

vmware 快照用关机吗_PS板绘上色的骚操作,打破初学者上色残的瓶颈!|快照|绘画|初学者|配色|色阶...

PS板绘上色的骚操作&#xff0c;打破初学者上色残的瓶颈&#xff01;初学者如何入门绘画&#xff1f;学习板画难吗&#xff1f;怎样才能学习好绘画&#xff1f;想必这些都是绘画初学者们经常在想的问题吧&#xff0c;就是不知道如何才能学习好绘画&#xff0c;然后绘画出自己想…

vue概述、vue文件特点、vue核心思想、双向数据流、单文件、启动一个vue项目、声明式渲染

vue介绍&#xff1a; Vue&#xff1a;当前较火的MVVM框架&#xff0c;轻量、简介、高效、组件化、数据驱动&#xff0c;模块和渲染函数的弹性选择&#xff0c;简单的语法及项目创建&#xff0c;渲染速度极快&#xff0c;基于Virtual Dom&#xff0c;利用虚拟DOM实现快速渲染&a…

jQuery特效手风琴特效 手写手风琴网页特效

今天写一个简单的手风琴效果&#xff0c;不用插件&#xff0c;利用强大的jQuery&#xff0c;写一个手风琴效果。 页面预览&#xff0c;请点击这里预览&#xff1a; 手风琴预览案例分析&#xff1a; html结构 就是一个大盒子里面放着5个li&#xff0c;每个li的小小是200像素&a…

db2 删除索引_MYSQL进阶——索引

索引模型hash索引hash索引主要适用于等值查询的场景&#xff0c;排序&#xff0c;模糊搜索等场景并不适用有序数组有序数组可用于非等值查询&#xff0c;排序等场景&#xff0c;但是由于写数据时需要对数组中的元素进行位移&#xff0c;所以一般用于静态数据的场景二叉树二叉树…

javascript中es6语法

es6语法简介&#xff1a; // 1.历史&#xff1a;// 1995-----JavaScript诞生// 1997-----ECMAScript标准确立// 1999-----ES3出现&#xff0c;与此同时IE5风靡一时// 2009-----ES5出现&#xff0c;现在绝大所数使用的是ES5// 2015-----ES6/ECMAScript2015出现// 2.函数的Rest参…

react 导航条选中颜色_调整安卓手机的颜色以更好地查看一切

并非所有人都有相同的区分颜色的能力。我们对屏幕上色彩配置的需求甚至口味可能会因人而异。幸运的是&#xff0c;Android为我们提供了多种本地工具&#xff0c;能够调整手机的颜色。我们的手机显示数百万种音调&#xff0c;这些音调是由屏幕配置或终端如何解释从某些应用程序接…

vue项目目录结构分析、过滤器、vue文件中基础template、script、style

项目目录结构&#xff1a; 1.在一个项目中一般的目录结构为&#xff1a;my_project------------项目文件夹|____src--------------------------------存放人可以看懂的源代码&#xff0c;具备一定功能划分&#xff0c;mvc思想|____dist-------------------------------存放真实…