Node.js里面的內(nèi)置模塊和自定義模塊的實(shí)現(xiàn)
一、Commonjs
- Commonjs是nodejs中的自定義模塊
- Commonjs規(guī)范的提出,彌補(bǔ)javascript沒(méi)有標(biāo)準(zhǔn)的缺陷,提供一個(gè)類(lèi)似后端語(yǔ)言的標(biāo)準(zhǔn)庫(kù),也就是說(shuō)commonjs是模塊化的標(biāo)準(zhǔn),nodejs就是commonjs模塊化的實(shí)現(xiàn)。在nodejs中除了http,url,fs等等都是nodejs的內(nèi)置模塊,可以直接使用.
- commonjs中自定義模塊的實(shí)現(xiàn):
- 在nodejs中將公共的功能抽離為單獨(dú)的js文件作為模塊,在外部是沒(méi)有辦法訪(fǎng)問(wèn)的(類(lèi)似后端的私有的屬性和方法);要想使用模塊,就必須在模塊里面通過(guò)exports或者module.exports暴露屬性或者方法。在需要的模塊使用require引入模塊。

二、模塊導(dǎo)出兩個(gè)方案
方案一
let str={};
module.exports=str;
方案二
let str={};
exports.A=str;
三、自定義模塊寫(xiě)法
common.js
// node里面的內(nèi)置模塊和自定義模塊
// 模塊導(dǎo)出兩個(gè)方案
let str={};
module.exports=str;
exports.A=str;
// 引入模塊得使用require("")加載模塊
let todo=require("./todo");//可以省略后綴
console.log(todo);
todo.js
module.exports={
name:"張三",
sleep:function(){
console.log("睡覺(jué)");
}
}
或者
module.exports={
name:"張三",
sleep:function(){
console.log("睡覺(jué)");
}
}
- node里面的require()加載模塊的時(shí)候可以直接寫(xiě)名稱(chēng),但是必須放在依賴(lài)下加載,并且還要生成配置文件
- 終端進(jìn)入依賴(lài)文件,安裝配置文件
- nodejs 可以自動(dòng)找node_modules文件下的文件 :如果node_modules文件下有文件夾 可在cd進(jìn)入這個(gè)文件 使用命令cnpm init --yes 安裝當(dāng)前文件的package.json文件,直接請(qǐng)求require(“名字”);
案例一
common.js
// 引入模塊得使用require("")加載模塊
let todo=require("./todo");//可以省略后綴
console.log(todo);
// node里面的require()加載模塊的時(shí)候可以直接寫(xiě)名稱(chēng),但是必須放在依賴(lài)下加載,并且還要生成配置文件
// 終端進(jìn)入依賴(lài)文件,安裝配置文件
let fetch=require("Fetch");
console.log(fetch);
fetch.get("http://www.zjm.com");
Fetch.js
module.exports={
get(url){
console.log(url);
}
}
案例二
common.js
let Axios = require("Axios");
let url = "https://autumnfish.cn/search";
let data = { keywords: '西安' };
const http = require("http");
let app = http.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/html;charset=utf-8" });
Axios.get(url, { params: data }).then((result) => {
res.write(result);
res.end();
});
});
app.listen(8080)
Axios.js
const http = require("http");
const https=require("https");
//轉(zhuǎn)化方法
let change = (args) => {
let str = "?";
for (let key in args) {
str += key + "=" + args[key];
str += "&";
}
return str.slice(0, str.length - 1);
}
module.exports = {
get(href, { params }) {
return new Promise((resolve, reject) => {
href += change(params);
https.get(href, (res) => {
let { statusCode } = res;
let error;
if (statusCode != 200) {
error = new Error('Request Failed.\n' +
`Status Code: ${statusCode}`);
}
if (error) {
console.error(error.message);
// Consume response data to free up memory
res.resume();
return;
}
//設(shè)置響應(yīng)編碼
res.setEncoding("utf8");
let alldata = "";
//監(jiān)聽(tīng)數(shù)據(jù)
res.on("data", (info) => {
alldata += info;
})
res.on("end", () => {
let data =alldata;
resolve(data);
})
});
});
},
post() {
}
}
到此這篇關(guān)于Node.js里面的內(nèi)置模塊和自定義模塊的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Node.js 內(nèi)置模塊和自定義模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nodejs爬蟲(chóng)進(jìn)階教程之異步并發(fā)控制
這篇文章主要介紹了Nodejs爬蟲(chóng)進(jìn)階教程之異步并發(fā)控制的相關(guān)資料,需要的朋友可以參考下2016-02-02
visual studio配置node.js開(kāi)發(fā)的圖文教程
在進(jìn)行node開(kāi)發(fā)時(shí),使用visual studio作為開(kāi)發(fā)工具是非常常見(jiàn)的選擇,本文主要介紹了visual studio配置node.js開(kāi)發(fā)的圖文教程,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
對(duì)node.js中render和send的用法詳解
今天小編就為大家分享一篇對(duì)node.js中render和send的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
Node.js學(xué)習(xí)之地址解析模塊URL的使用詳解
url模塊是nodejs里面的一個(gè)簡(jiǎn)單的模塊,下面這篇文章主要給大家介紹了關(guān)于Node.js學(xué)習(xí)之地址解析模塊URL使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-09-09
electron安裝報(bào)錯(cuò)終極解決辦法詳細(xì)講解
當(dāng)使用npm安裝electron時(shí),有時(shí)候會(huì)遇到各種各樣的錯(cuò)誤,如網(wǎng)絡(luò)錯(cuò)誤、權(quán)限錯(cuò)誤等等,這篇文章主要給大家介紹了關(guān)于electron安裝報(bào)錯(cuò)終極解決辦法的相關(guān)資料,需要的朋友可以參考下2024-09-09
Visual?Studio?Code中npm腳本找不到圖文解決辦法
這篇文章主要給大家介紹了關(guān)于Visual?Studio?Code中npm腳本找不到的圖文解決辦法,做前端開(kāi)發(fā)如果項(xiàng)目達(dá)到了一定的規(guī)模就離不開(kāi)npm了,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
nodejs實(shí)現(xiàn)OAuth2.0授權(quán)服務(wù)認(rèn)證
本篇文章主要介紹了nodejs實(shí)現(xiàn)OAuth2.0授權(quán)服務(wù)認(rèn)證,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12

