爲何引入 npm 包 咱們能引入直接使用

在使用 npm 包的時候我很好奇一件事情, 爲何咱們 npm install 到 node_module 以後咱們能直接 var bar = require('bar')

咱們使用的是 CommonJS 模塊化 規範 目錄結構javascript

--demo
        --node_module  //能夠手動建立文件夾
            --bar.js
        --demo.js
複製代碼

bar.jsjava

var str = {
        str: '我是在 node_module 下bar.js'
    }
    exports.str = str // 必須用模塊化標準 導出來
複製代碼

demo.jsnode

var str = require('bar')  //後綴名能夠省略
    console.log(str)    // { str: { str: '我是在 node_module 下bar.js' } }
複製代碼

數據的結果是 { str: { str: '我是在 node_module 下bar.js' } }npm

這樣咱們 用的時候就須要 str.str 這樣就很不友好了。json

咱們換一種導出的方法

bar.js模塊化

var str = {
        str: '我是在 node_module 下bar.js'
    }
    module.exports = str // 必須用模塊化標準 導出來
複製代碼

你們能夠了解一下 模塊化 導出 引入的一些細節ui

初步的咱們已經能實現了 若是咱們改變一下目錄結構

--demo
        --node_module  //能夠手動建立文件夾
            --bar
                --bar.js
        --demo.js
複製代碼

demo.js 引入的時候也要相應作一下處理spa

var str = require('bar/bar')  //後綴名能夠省略
    console.log(str)    // { str: { str: '我是在 node_module 下bar.js' } }
複製代碼

這好像也不是咱們要的效果,重要的步驟要來了code

咱們要在 node_module 下邊的 bar 文件夾下邊 建立一個 package.json 文件ip

執行 npm init -y 表示不須要提示直接建立 package.json 文件

{
  "name": "bar",
  "version": "1.0.0",
  "description": "",
  "main": "bar.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
複製代碼

注意 咱們 入口 main 已經指定了文件夾了

因此咱們在用的時候就能實現

var str = require('bar')  //後綴名能夠省略
    console.log(str)    // { str: { str: '我是在 node_module 下bar.js' } }
複製代碼
相關文章
相關標籤/搜索