日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 node中模板引擎、模块导出、package.json简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

art-template不僅在瀏覽器可以使用,也可以在node中使用,并且模板引擎起早誕生于服務(wù)器領(lǐng)域,在node中使用模板引擎:

1.安裝:在一個文件目錄下執(zhí)行命令: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()渲染模板:第一參數(shù)表示定義好的模板(字符串型);第二個參數(shù)為對象,表示模板中變量的值name: 'Jack',age: 18,province: '深圳市',hobbies: ['打游戲','聽歌','睡覺'],title: '個人信息'});console.log(ret); //將渲染的數(shù)據(jù)打印出來,這里可以通過http模塊響應(yīng)給瀏覽器等});<!--下面案例實現(xiàn)將數(shù)據(jù)渲染并響應(yīng)給瀏覽器:-->var http = require('http');var fs = require('fs');var server = http.createServer();var urldir = 'E:/web前端/web前端筆記/11.node/11.像Apache一樣打印目錄結(jié)構(gòu)/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) { //遍歷目錄結(jié)構(gòu)files,并動態(tài)的把數(shù)組的每一項拼接到content中,content在這里就是模塊content += `<tr><td><a href="">${item}/</a></td></tr>`});data = data.toString(); //二進制數(shù)據(jù)轉(zhuǎn)換為字符串data = data.replace('str', content); //遍歷后的content數(shù)據(jù)替換模板中的str,在這里str就是html頁面中的一個字符,使用替換的方式將上面的數(shù)據(jù)替換到html頁面中response.end(data); //響應(yīng)給瀏覽器,data數(shù)據(jù)實際就是字符串});});});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.重新建立引用關(guān)系:exports = module.exports,重新建立引用關(guān)系后,exports和module.exports的指向相同。

在一個node.js文件中載入另一node.js文件并使用其中的變量:

在node中沒有全局作用域,只有模塊作用域,超出作用域無效,外部訪問不到內(nèi)部,內(nèi)部也訪問不到外部;如:在a.js中定義的str變量默認是不能在被載入a.js的b.js文件中訪問到。

有的時候使用一個模塊的目的不僅是執(zhí)行這個模塊這么簡單,還需要拿到里面的成員,此時可以使用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先下載第三方依賴。這樣可以節(jié)約空間,其指定包的配置為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 - 包的官網(wǎng) urlauthor - 包的作者姓名contributors - 包的其他貢獻者姓名dependencies - 依賴包列表。如果依賴包沒有安裝,npm 會自動將依賴包安裝在 node_module 目錄下repository - 包代碼存放的地方的類型,可以是 git 或 svn,git 可在 Github 上main - main 字段指定了程序的主入口文件,require('moduleName') 就會加載這個文件。這個字段的默認值是模塊根目錄下面的 index.jskeywords - 關(guān)鍵字手動生成package.json文件:npm init

提示:本文圖片等素材來源于網(wǎng)絡(luò),若有侵權(quán),請發(fā)郵件至郵箱:810665436@qq.com聯(lián)系筆者刪除。
筆者:苦海

總結(jié)

以上是生活随笔為你收集整理的node中模板引擎、模块导出、package.json简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。