node中modules.exports與exports導(dǎo)出的區(qū)別
一:node是什么?
node只是平臺(tái),或者說(shuō)是環(huán)境,其實(shí)用的還是js語(yǔ)法
主要框架express以及koa,兩個(gè)框架是同一個(gè)團(tuán)隊(duì)開(kāi)發(fā),node中也有類(lèi)似于php的Ci框架的MVC模式
- M->model數(shù)據(jù)層的增刪改差操作
- V->view視圖層
- C->controller路由控制,主要起到轉(zhuǎn)發(fā)工作
一個(gè)完整的node構(gòu)成:node.js+express+mysql
二:工作代碼的順序:
- app.js為node的入口文件,
- 在view寫(xiě)好html文件,模板可以任意,
- rouer負(fù)責(zé)路由跳轉(zhuǎn)
- controllers負(fù)責(zé)具體業(yè)務(wù)方法的操作,在這個(gè)文件里涉及到的增刪改差放在model中
- model負(fù)責(zé)數(shù)據(jù)的操作
此外,默認(rèn)的端口號(hào)為3000,底層如啟動(dòng)命令也可以配置,node支持的導(dǎo)出為module.exports(整體導(dǎo)出) / exports(單個(gè)導(dǎo)出),模塊引用為require
三:node中modules.exports與exports
node中使用require和modules.exports以及exports是因?yàn)閚ode遵循CommonJS規(guī)范。
CommonJS定義的模塊分為: 模塊標(biāo)識(shí)(module)、模塊定義(exports) 、模塊引用(require)
使用范圍
| require | export / import | module.exports / exports |
|---|---|---|
| node 和 es6 都支持的引入 | 只有es6 支持的導(dǎo)出引入 | 只有 node 支持的導(dǎo)出 |
exports與modules.exports指向相同地址
exports ->{}<- modules.exports
我理解為實(shí)際上每次都是導(dǎo)出modules.exports,本來(lái)指向一個(gè)地址,如下會(huì)切斷modules.exports和exports分別指向兩個(gè)地址
a.js
modules.exports = {a:2}
exports.a = 1
app.js
var a = require ('./a')
console.log(a.a) // 執(zhí)行node app 打印2
類(lèi)比
var obj = new Object();
obj.name = 'lisi'
//情況一:對(duì)象.屬性
// obj.sayHello 相當(dāng)于export.sayHello
obj.sayHello = function () {
console.log(this.name) // lisi
}
obj.sayHello();
//情況二:對(duì)象.方法
//obj相當(dāng)于module.exports
obj = {
sayHello: function () {
// . ...
}.
}
console.log(obj.name) // undefined
obj.sayHello();
obj.name(); // 打印不出lisi,已經(jīng)重寫(xiě)obj,obj下面沒(méi)有name方法
此文章也是自己的學(xué)習(xí)記錄,如有不足,歡迎指正指導(dǎo)。也希望大家多多支持腳本之家。
相關(guān)文章
如何利用node.js開(kāi)發(fā)一個(gè)生成逐幀動(dòng)畫(huà)的小工具
這篇文章主要給大家介紹了關(guān)于如何利用node.js開(kāi)發(fā)一個(gè)生成逐幀動(dòng)畫(huà)小工具的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
解決node.js含有%百分號(hào)時(shí)發(fā)送get請(qǐng)求時(shí)瀏覽器地址自動(dòng)編碼的問(wèn)題
這篇文章主要介紹了解決node.js含有%百分號(hào)時(shí)發(fā)送get請(qǐng)求時(shí)瀏覽器地址自動(dòng)編碼的問(wèn)題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
NodeJs環(huán)境安裝與配置的實(shí)現(xiàn)步驟
本文主要介紹了NodeJs環(huán)境安裝與配置,包括配置環(huán)境和配置國(guó)內(nèi)鏡像,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01
NodeJS實(shí)現(xiàn)圖片上傳代碼(Express)
本篇文章主要介紹了NodeJS實(shí)現(xiàn)圖片上傳代碼(Express) ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
10個(gè)Node.js庫(kù)幫助你優(yōu)化代碼和簡(jiǎn)化開(kāi)發(fā)
這篇文章主要介紹了10個(gè)Node.js庫(kù)幫助你優(yōu)化代碼和簡(jiǎn)化開(kāi)發(fā),其中包括處理數(shù)組、對(duì)象、字符串庫(kù)Lodash,緩存數(shù)據(jù)處理庫(kù)Node-cache,解析、操作和格式化日期和時(shí)間庫(kù)Moment.js,Redis操作庫(kù),發(fā)送電子郵件庫(kù)Nodemailer2023-05-05
Node.js v8.0.0正式發(fā)布!看看帶來(lái)了哪些主要新特性
Node.js v8.0.0 已正式發(fā)布。v8.0.0 是下一個(gè)主要的版本,帶來(lái)了一系列重大的變化和新功能,內(nèi)容十分多!下面這篇文章主要帶著大家一起看看Node.js v8.0.0帶來(lái)了哪些主要新特性,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-06-06
Node使用Nodemailer發(fā)送郵件的方法實(shí)現(xiàn)
這篇文章主要介紹了Node使用Nodemailer發(fā)送郵件的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02

