Node.js學(xué)習(xí)——模塊,自定義模塊

一、http模塊、url模塊

//引用模塊
const http = require('http');
const url = require('url');

// 發(fā)送 HTTP 頭部 
// HTTP 狀態(tài)值: 200 : OK 
// 設(shè)置 HTTP 頭部,狀態(tài)碼是 200,文件類型是 html,字符集是 utf8
http.createServer((req,res)=>{
    res.writeHead(200,{"Content-type": "text/html;charset=utf-8"});  // 解決亂碼
    
    console.log(req.url);  
    
    if(req.url !== "/favicon.ico"){

        // url.parse()     解析 URL
        // url.format(urlObject) //是上面 url.parse() 操作的逆向操作 
        // url.resolve(from, to) 添加或者替換地址

        var getValue = url.parse(req.url,true).query;
        console.log(getValue);
        console.log(`姓名: ${getValue.name}, 年齡: ${getValue.age}`);
        res.write(`姓名: ${getValue.name}, 年齡: ${getValue.age}`)
    }
    
    res.end()
    // end 方法使 Web 服務(wù)器停止處理腳本并返回當(dāng)前結(jié)果
}).listen(3000)

url.parse()第二個(gè)參數(shù)加true與不加true的區(qū)別

const url = require('url')
let src = 'www.baidu.com?name=zhangsan&age=18'
url.parse(src)
/*
{
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '?name=zhangsan&age=18',
  query: 'name=zhangsan&age=18',
  pathname: 'www.baidu.com',
  path: 'www.baidu.com?name=zhangsan&age=18',
  href: 'www.baidu.com?name=zhangsan&age=18'
}
*/
url.parse(src,true)
/*
{
  protocol: null,
  slashes: null,
  auth: null,
  host: null,
  port: null,
  hostname: null,
  hash: null,
  search: '?name=zhangsan&age=18',
  query: [Object: null prototype] { name: 'zhangsan', age: '18' },
  pathname: 'www.baidu.com',
  path: 'www.baidu.com?name=zhangsan&age=18',
  href: 'www.baidu.com?name=zhangsan&age=18'
}
*/

二、自動重啟服務(wù)工具

Node.js中的代碼修改之后自動重啟服務(wù)可以使用的工具有:
nodemon, supervisor
安裝
nodemon

npm i -g nodemon

supervisor

npm i -g supervisor

使用
supervisor

supervisor index.js

nodemon

nodemon index.js

Node.js中有兩類模塊,一類是 Node 提供的模塊,稱為核心模塊;另一類是用戶編寫的模塊,稱為文件模塊。

三、自定義模塊

使用require 和exports操作自定義模塊
exports導(dǎo)出一個(gè)自定義模塊時(shí)

const obj = {}
module.exports = obj
const  a = function(){}
exports.a = a;

**在使用require時(shí)引入一個(gè)自定義模塊時(shí)會根據(jù)提供的文件路徑獲取自定義模塊,如果沒有寫文件路徑而是直接寫模塊的名稱則會從node_modules文件夾中查找模塊,如果該模塊目錄中存在index.js文件就可以直接調(diào)用,如果該模塊中不存在index.js文件則會報(bào)錯(cuò)。如何想使用非index.js文件作為入口文件,在該模塊目錄下 npm init 生成 package.json進(jìn)行配置 **

const dp = require('dp')

一般的自定義模塊的導(dǎo)出分為exports和module.exports

新建exportsMethod.js文件,在里面編寫如下代碼

const obj = {
    get: function () {
        console.log('這是一個(gè)get函數(shù)')
    },
    post: function () {
        console.log('這是一個(gè)post函數(shù)')
    }
}

// exports.xxxx = obj;  

module.exports = obj;

新建一個(gè)index.js文件
里面對exportsMethod中的內(nèi)容進(jìn)行require

var req = require('./exportsMethod')
console.log(req);

// exports.xxxx = obj;  
// { xxxx: { get: [Function: get], post: [Function: post] } }

// module.exports = obj;
// { get: [Function: get], post: [Function: post] }

四、NPM包管理

  • 常見的npm指令
  • npm init [-y]: 初始化一個(gè)package.json文件;
  • npm install 包名: 安裝一個(gè)包;
  • npm install --save 包名: 將安裝的包添加到package.json的依賴中(dependencies);
  • npm install -g 包名: 全局安裝一個(gè)包;
  • npm docs 包名: 查看包的文檔;
  • npm root -g: 查看全局包的安裝路徑;
  • npm config set prefix "路徑": 修改全局包安裝路徑;
  • npm list: 查看當(dāng)前目錄下安裝的所有包;
  • npm list -g: 查看全局包的安裝路徑下所有的包;
  • npm uninstall 包名: 卸載當(dāng)前目錄下某個(gè)包;
  • npm uninstall -g 包名: 卸載全局安裝路徑下的某個(gè)包;
  • npm update 包名: 更新當(dāng)前目錄下的某個(gè)包;

初始化一個(gè)項(xiàng)目需要使用npm init指令,運(yùn)行此命令后會自動生成一個(gè)package.json文件,該文件中包含一些鍵值對。

image.png

  • npm安裝指定版本的包使用@
npm install node-media-server@2.1.0

package.json文件中的dependencies中的包的版本號的規(guī)則如下

^:表示第1、2位版本號不變,最后一位取最新的
~: 表示第1位版本號不變,后面兩位取最新的
*:表示所有的版本號取最新的

  • npm、cnpm、yarn的基本指令比較
功能                              NPM                       CNPM                        YARN
初始化某個(gè)項(xiàng)目                  npm init                   cnpm init                    yarn init
默認(rèn)安裝依賴操作            npm install/link            cnpm install/link           yarn install/link
    安裝某個(gè)依賴          npm install taco -s           cnpm install taco -s          yarn add taco
并保存到package.json    
移除某個(gè)依賴項(xiàng)目          npm uninstall taco -s         cnpm uninstall taco -s        yarn remove taco
安裝某個(gè)開發(fā)時(shí)依賴項(xiàng)目   npm install taco -save-dev    cnpm install taco -save-dev   yarn add taco -dev
更新某個(gè)依賴項(xiàng)目           npm update taco -s               cnpm update taco -s       yarn upgrade taco
安裝某個(gè)全局依賴項(xiàng)目        npm install taco -g           cnpm install taco -g      yarn global add taco
發(fā)布/登錄/登出           npm publish/login/logout      cnpm publish/login/logout   yarn ublish/login/logout
運(yùn)行某個(gè)命令                npm run/test                    cnpm run/test               yarn run/test
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容