node.js 基本语法识记

因为要用vue,得懂点node.js语法吧,要不跟个盲人一样。

1.定义模块输出函数

模块既可以是一个文件,也可以是包含一个或多个文件的目录。如果模块是一个目录, Node 通常会在这个目录下找一个叫 index.js 的文件作为模块的入口(这个默认设置可以重写)
例:currency.js

const canadianDollar = 0.91;
function roundTwo(amount) {
   return Math.round(amount * 100) / 100;
}
exports.canadianToUS = canadian => roundTwo(canadian * canadianDollar);
exports.USToCanadian = us => roundTwo(us / canadianDollar);

引入这个模块的代码只能访问到 canadianToUS USToCanadian 这两个函数,变量 canadianDollar 作为私有变量仅作用在canadianToUS USToCanadian 的逻辑内部,外部程序不能直接访问它。

2.调用模块

test-currency.js

const currency = require('./currency');
console.log('50 Canadian dollars equals this amount of US dollars:');
console.log(currency.canadianToUS(50));
console.log('30 US dollars equals this amount of Canadian dollars:');
console.log(currency.USToCanadian(30));

引入一个以./开头的模块意味着,如果你准备创建的程序脚本 test-currency.js currency_app目录下,那 currency.js 模块文件,应该也放在 currency_app 目录下。

在引入时, .js扩展名可以忽略。如果没有指明是 js 文件, Node 也会检查 json 文件, json 文件是作为 JavaScript对象加载的。

如果想把这个模块放到子目录中,比如 lib/,只要把 require 语句改成下面这样就可以了:

const currency = require('./lib/currency');

3.定义模块输出类

class Currency {
    constructor(canadianDollar) {
        this.canadianDollar = canadianDollar;
    }
    roundTwoDecimals(amount) {
        return Math.round(amount * 100) / 100;
    }
    canadianToUS(canadian) {
        return this.roundTwoDecimals(canadian * this.canadianDollar);
    }
    USToCanadian(us) {
        return this.roundTwoDecimals(us / this.canadianDollar);
    }
}
module.exports= Currency;

module.exports 可以对外提供单个变量、函数或者对象。如果你创建了一个既有 exports 又有module.exports 的模块,那它会返回 module.exports,而 exports 会被忽略。

4.node_modules 重用模块

       要求模块在文件系统中使用相对路径存放,对于组织程序特定的代码很有帮助,但对于想要在程序间共享或跟其他人共享代码却用处不大。 Node 中有一个独特的模块引入机制,可以不必知道模块在文件系统中的具体位置。这个机制就是使用 node_modules 目录。

前面那个模块的例子中引入的是./currency。如果省略./,只写 currencyNode 会遵照几个规则搜寻这个模块:

5. export default

这个命令是用来在模块定义文件中用来指定默认输出函数。

export default function foo() { console.log('foo'); }

function foo() { console.log('foo'); }

export default foo;

用环境变量 NODE_PATH 可以改变 Node 模块的默认路径。如果用了它,在 Windows 中NODE_PATH 应该设置为用分号分隔的目录列表,在其他操作系统中则用冒号分隔。

尽管 Node 模块系统的本质简单直接,但还是有两点需要注意一下。


第一,如果模块是目录,在模块目录中定义模块的文件必须被命名为 index.js,除非你在这个目录下一个叫 package.json 的文件里特别指明。要指定一个取代 index.js 的文件, package.json文件里必须有一个用 JavaScript 对象表示法(JSON)数据定义的对象,其中有一个名为 main 的键,指明模块目录内主文件的路径。

至于vue项目根目录中的package.json中为什么没有main,这个和npm run 命令有关,见下文

第二, Node 能把模块作为对象缓存起来。如果程序中的两个文件引入了相同的模块,第一个 require 会把模块返回的数据存到内存中,这样第二个 require 就不用再去访问和计算模块的源文件了。也就是说,在同一个进程中用 require 加载一个模块得到的是相同的对象。

npm run 命令:

原生的 node.js 运行是通过 node xxx.js 来运行一个js的,但使用 npm run 就不一样了,npm 允许在package.json文件里面,使用scripts字段定义脚本命令。

{
  // ...
  "scripts": {
    "build": "node build.js"
  }
}

执行 npm run build 就会执行 node build.js

npm --save 命令:

使用 npm install 默认选项安装包时,仅仅会把包下载到 node_modules/ 中,并不会同时修改 package.json。而使用 --save 选项就可以在安装包的同时,修改 package.json 文件。

npm install module_name -S    即    npm install module_name –save    写入dependencies

npm install module_name -D    即    npm install module_name –save-dev 写入devDependencies

npm install module_name -g 全局安装(命令行使用)

npm install module_name 本地安装(将安装包放在 ./node_modules 下)

桂棹兮兰桨,击空明兮溯流光。
原文地址:https://www.cnblogs.com/nanfei/p/15433411.html