添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

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

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

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

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

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

	<!--简单原理,下面是tpl.html模板:-->
    <!DOCTYPE html>
    <html lang="en">
        <meta charset="UTF-8">
        <title>{{ title }}</title>
    </head>
        <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 += `
                                  <td><a href="">${item}/</a></td>
                });
                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 - 包的官网 url author - 包的作者姓名 contributors - 包的其他贡献者姓名 dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下 repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上 main - main 字段指定了程序的主入口文件,require('moduleName') 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js keywords - 关键字 手动生成package.json文件:npm init

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

在node.js中使用引擎模板:art-template不仅在浏览器可以使用,也可以在node中使用,并且模板引擎起早诞生于服务器领域,在node中使用模板引擎:1.安装:在一个文件目录下执行命令:npm install art-template2.在需要使用的文件模块中使用require方法加载:art-template即可。3.查阅文档,使用引擎模板API,如: &lt;!--简单原理,下面是tpl.html模板:--&gt; &lt;!DOCTYPE html&gt; &lt 有时,您创建一个存储库,该存储库生成项目的打包版本,并且希望该存储库拥有自己的package.json文件,但从原始项目继承的名称和版本相同。 如果要全局安装package-json-from-template,请在终端上使用以下命令: $ npm install -g package-json-from-template 否则,只需使用以下命令将PackageJsonFromTemplate添加到您的项目: $ npm install --save-dev package-json-from-template 如果您更喜欢使用Yarn:
package.json 文件详解前言一、package.json 文件作用二、package.json 文件创建三、package.json 文件示例四、package.json 文件配置说明 五、项目依赖 六、开发依赖 每个项目的根目录下面都有一个package.json文件,定义了这个项目所需要各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npminstall命令根据这个配置文件,自动下载所需要的模块,也就是配置项目所需的运行和开发环境 node_module...
1.前端模块化规范的分类 在 ES6 模块化规范诞生之前,JavaScript 社区已经尝试并提出了AMD、CMD、CommonJS等模块化规范。 但是,这些由社区提出的模块化标准,还是存在一定的差异性与局限性、并不是浏览器与服务器通用的模块化标准,例如: ⚫ AMD 和 CMD 适用于浏览器端的 Javascript 模块化 ⚫ CommonJS 适用于服务器端的 Javascript 模
exports 字段 (https://webpack.js.org/guides/package-exports/) exports 字段声明了一个对应关系,用 import "package" 和 import "package/sub/path" 会返回不同的模块。 这替换了默认返回 main 字段文件的行为。 当指定了 exports 字段时,只有声明了那些模块是可用的,其他的模块会抛出 ModuleNotFound Error。 "exports": { ".": "./main.
当前节点版本是否支持package.json的“ exports”字段? 在撰写本文时,节点v12.17 +和v13 +支持的。 如果当前节点版本支持该库,则导出true如果不支持,则导出false如果位于浏览器,则导出null 。 要求或导入has-package-exports/conditional以确定当前环境是否支持条件导出(在撰写本文时,节点v12.17 +和v13.7 +)。 要求或导入has-package-exports/pattern以确定当前环境是否支持导出模式(在撰写本文时,节点v12.20 +和v14.13 +)。 只需克隆仓库, npm install ,然后运行npm test var Config = require ( './' ) ; var config = new Config ( ) ; console . log ( config . expand ( require ( './package' ) ) ) ; 使用传递给的来解析值(以作为起点在该模式上构建): 仅分析在模式上具有相应字段的属性。 没有相应字段的任何属性都将原样返回。 请参阅以了解如何在架构上添加或覆盖字段。 注册.field时,可以选择定义default值。 当运行.expand ,缺少npm所需或推荐的属性,如果可以在存储库找到有效数据,则expand-pkg尝试创建该字段。
1、npm是什么 npm是前端开发广泛使用的包管理工具,它让js开发者分享、复用代码更方便。可以重复的框架代码被称为包(package)或者模块(module),一个包可是是一个文件夹里放着几个文件夹,还有一个package.json文件。 npm的作用就是让我们把可复用的框架代码发布到一个地方,可以供大家一起使用。 2、安装npm npm是依赖node.js的,先去官网https://n...
随着互联网的飞速发展,各种技术日益更新,迭代…。而前端无疑是变化最大的一种,做前端的人都知道nodejs,而nodejs有很多的依赖,那么我们在新建一个项目的时候,如何快速的导入这些依赖从而创建一个nodejs项目呢??? 前端入门级 Linux stone 4.15.0-29deepin-generic #31 SMP Fri Jul 27 07:12:08 UTC 201... 这会告诉 Node.js 解释器使用 ES6 模块语法来解析你的代码。当然,在你的代码,你也需要使用 `import` 和 `export` 关键字来定义模块的导入和导出。 如果你需要支持 CommonJS 模块语法,你可以将 `type` 的值设置为 `commonjs`,或者干脆省略这个配置项。这时,Node.js 解释器会默认使用 CommonJS 模块语法来解析你的代码。