Nodejs初识

1. 基础

Node.js 就是运行在服务端的 JavaScript。

Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台。

Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。

官网:https://nodejs.org

NPM(Nodejs Package Manager)是随同nodejs一起安装的包管理工具,能解决nodejs包依赖。

// first.js
'use strict';

console.log('Hello, world.');

第一行总是写上'use strict';是因为我们总是以严格模式运行JavaScript代码,避免各种潜在陷阱。

文件名必须以.js结尾,文件名只能是英文字母、数字和下划线的组合。

如果在JavaScript文件开头写上'use strict';,那么Node在执行该JavaScript时将使用严格模式。但是,在服务器环境下,如果有很多JavaScript文件,每个文件都写上'use strict';很麻烦。我们可以给Nodejs传递一个参数,让Node直接为所有js文件开启严格模式:

node --use_strict first.js

2. 安装

javascript在nodejs上运行,nodejs底层是C/C++,需要编译安装。

可从官网直接下载编译好的二进制包:https://nodejs.org/en/download/ 或 http://nodejs.cn/download/。目前稳定版本是12.16.1。

tar xvf node-v12.16.1-linux-x64.tar.xz -C /usr/local/bin
在/etc/profile下添加PATH:
export PATH=$PATH:/usr/loca/bin/node-v12.16.1-linux-x64/bin
soure /etc/profile

验证

node -v
v12.16.1
npm -v
6.13.4

Node.js REPL

Read Eval Print Loop:交互式解释器,提供nodejs的命令行交互环境。

ctrl+c按下两次退出Node REPL。

.help --列出使用命令

.break -- 退出多行表达式

.clear -- 退出多行表达式

.save filename -- 保存当前node repl会话到指定文件

.load filename -- 载入当前node repl会话内容

3. 模块

为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Node环境中,一个.js文件就称之为一个模块(module)。

使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。

要在模块中对外输出变量,用:

module.exports = variable;
module.exports = {
    foo: function(){return 'foo'; }
};

输出的变量可以是任意对象、函数、数组等。

要引入其他模块输出的对象,用:

var foo = require('other_module');

引入的对象具体是什么,取决于引入模块输出的对象。

如果只写模块名(不含路径),则node会依次在内置模块、全局模块和当前模块下查找。

示例:

// hello.js
'use strict';

var s = 'hello';

function greet(name){
    console.log(s + ', '+name + '!');
}

module.exports = greet;

//main.js
var greet = require('./hello');

var s = 'Wang';

greet(s); // hello, Wang!

Nodejs加载一个文件夹中的所有js文件

一般情况下,使用nodejs加载一个模块是这样,require("js文件路径"),其中路径可以省略掉js后缀。

如果要加载一个文件夹下的所有模块,可以这样使用

var ccc=require("./c");

其中c文件夹下有abindex三个js默认会加载index.js此时只需要在index.js中定义好module,则就可以直接调用a或者b文件中的方法,具体代码如下

测试文件multifileTest.js

var ccc=require("./c");
var aobj=ccc.aa;
var bobj=ccc.bb;
aobj.a();
bobj.b();

c文件夹下的index.js

module.exports = {
  aa: require(‘./a‘),
  bb: require(‘./b‘)
};

c文件夹下的a.js

module.exports.a=function(){
    console.log("a")
}

c文件夹下的b.js

module.exports.b=function(){
    console.log("b")
}

4. NPM

yarn也可以管理js包,参考:https://yarn.bootcss.com/docs/cli/config/,yarn在安全性和速度上较好。(npm insatll -g yarn)

npm install express //本地安装
npm install express -g //全局安装
npm list -g
npm list express
npm uninstall express
npm update express
npm search express
npm init  // 创建模块,生成模块package.json文件
npm publish // 发布模块
npm cache clear //清空NPM本地缓存,用于对付使用相同版本号发布新版本代码的人
npm unpublish <package>@<version> //撤销发布自己发布过的某个版本代码。

注:npm err! Error: connect ECONNREFUSED 127.0.0.1:8087出现此错误,则

$npm config set proxy null

本地安装

将安装包放在 ./node_modules 下(运行 npm 命令时所在的目录),如果没有 node_modules 目录,会在当前执行 npm 命令的目录下生成 node_modules 目录。可以通过require()来引入本地安装的包。

全局安装

将安装包放到安装目录或/usr/local下,可以直接在命令行使用。

淘宝NPM镜像

淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。

你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

这样就可以使用 cnpm 命令来安装模块了:

$ cnpm install [name]

 

参考:

1. Node.js教程 https://www.runoob.com/nodejs/nodejs-tutorial.html

2. 廖雪峰node.js https://www.liaoxuefeng.com/wiki/1022910821149312/1023025235359040

3. 淘宝npm镜像帮助 https://developer.aliyun.com/mirror/NPM?from=tnpm

4. npm和yarn的区别,我们该如何选择?

5. https://yarn.bootcss.com/docs/cli/config/ yarn官网,使用文档

posted @ 2020-03-07 21:03  yuxi_o  阅读(235)  评论(0编辑  收藏  举报