小白学习笔记:入门Nodejs(1)

2021-04-01  本文已影响0人  一只小小小bunny

Nodejs简介

Nodejs不是一门语言也不是框架,它只是基于Google V8引擎的JavaScript运行时环境,同时结合了Libuv扩展了JavaScript功能,使之支持io,fs等只有语言才有的特性,使得JavaScript能够同时具有DOM操作(浏览器)和I/O(输入/输出)、文件读写、操作数据库(服务器端)等能力,是目前最简单的全栈式语言。它可以使原本在浏览器中运行的JavaScript有能力跑后端,从而操作我们的数据库,进行文件读写等;市面上高密的I/O模型,比如web开发,微服务,前端构建等都有Node.js 的身影,因为它可以实现自动化构建。它是一个开源与跨平台的 JavaScript 运行时环境。 它是一个可用于几乎任何项目的流行工具!
node.js的包管理工具,npm已经成为世界开源包管理中的最大生态,功能强大,此外也可以用yarn或者淘宝镜像cnpm。

Nodejs特点

1.事件驱动
2.非阻塞IO模型(异步)
3.轻量和高效

Nodejs在一线企业中的运用

作为中间层
客户端直接请求到中间层的Node服务,Node服务分析请求,看需要哪个页面,再去请求对应得数据,拿到数据之后和模板结合成用户想看到的页面,再拿给客户端。

nodejs.png

Nodejs在前端中的作用

做项目构建工具
比如说webpack,vue-cli都是输入项目构建的工具,它们就是用Nodejs来写的。
小型的后端也是有Nodejs来写


Node中模块导入/导出:exports和module.exports

在编写每个模块时,都有require,exports,module
三个预先定义好的变量可供使用

nodejs中模块的分类
核心模块(已经封装好的内置模块)
自己定义好的模块
第三方的模块(npm下载下来的)

require()函数的两个作用

执行导入的模块中的代码
返回导入模块中的接口对象

index1.js

let a=1;
let b=2;
let c = 999;

exports.a = a;
module.exports.c = c;
//系统默认设置了:exports = module.exports.c

index1.js

let a = require('./index1')
//在没有任何内容导出的情况下获取某个文件的内容 获得到一个空对象
//require获取路径时 可以不加后缀名 默认的后缀名就是.js

结果

PS D:\nodefile> node .\index.js
{ a: 1 }
PS D:\nodefile> node .\index.js
{ a: 1, c: 999 }

这里可以安装第三方包jquery

npm install jquery

//仅在模块第一次被使用时执行一次
let b= require('./index1')
let $ = require('jquery')//新添加
console.log(a);
console.log(b);
console.log(a==b);
console.log($);//新添加

结果

PS D:\nodefile> node .\index.js
{ username: '学生' }
{ user: '小明' }
{ user: '小明' }
true
[Function (anonymous)]

其实,当我们输入npm install后这些模块就会被自动安装到开发目录下的node_modules下

这里,安装好之后会生成node_modules\jquery文件夹
这里可以去了解一下package.json文件

总结:

  1. Node中每个模块都有一个 module对象, module对象中的有一个exports属性为一个接口对象,我们需要把模块之间公共的方法或属性挂载在这个接口对象中,方便其他的模块使用这些公共的方法或属性。
  2. Node中每个模块的最后,都会return:module.exports。
  3. Node中每个模块都会把module. exports指向的对象赋值给一个变量 exports ,也就是说: exports=module. exports。
  4. module. exports = xxx 表示当前模块导出一个单成员 ,结果就是XXX。

5.如果需要导出多个成员时必须使用exports.add=xxx; exports.foo = xx;或者使用
module. exports.add = xxx; module. export.foo = xxx; 。

常用的npm命令行

  1. npm -v :查看npm版本。
  2. npm init :初始化后会出现一个package. json配置文件。可以在后面加上-y ,快速跳过问答式界面。
  3. npm install :会根据项目中的package. json文件自动下载项目所需的全部依赖。
  4. npm install 包名--save- -dev(npm install 包名-D):安装的包只用于开发环境,不用于生产环境,会出现在package. json文件中的devDependencies属性中。
  5. npm insta11 包名--save(npm insta11 包名-S):安装的包需要发布到生产环境的,会出现在package.json文件中的dependencies属性中。
  6. npm list:查看当前目录下已安装的node包。
  7. npm list -g:查看全局已经安装过的node包。
  8. npm --help:查看npm帮助命令。
  9. npm update包名:更新指定包。
  10. npm uninstall 包名:卸载指定包。
  11. npm config list :查看配置信息。
  12. npm 指定命令--he1p :查看指定命令的帮助。
  13. npm info 指定包名:查看远程gpm.上指定包的所有版本信息。
  14. npm config set registry https://registry.npm.taobao.org:修改包下载源,此例修改为了淘宝镜像。
  15. npm root :查看当前包的安装路径。
  16. npm root -g :查看全局的包的安装路径。
  17. npm 1s包名:查看本地安装的指定包及版本信息,没有显示empty。
  18. npm 1s包名-9 :查看全局安装的指定包及版本信息,没有显示empty.1. npm -v :查看npm版本。

Nodejs-文件读取篇

先在D盘建一个fs文件 然后打开

 var fs = require('fs');
//导入文件
//node 读写文件也有同步和异步的接口 默认是异步

//同步
var fd = fs.openSync('hello.txt','r')
console.log(fd);

var buf = Buffer.alloc(20);
var content = fs.readFileSync('hello.txt',{flag:'r',encoding:'utf-8'})

console.log(content.toString);

结果

PS D:\Node-projects\fs> node index.js
3
[Function: toString]

稍微理解一下 [ ]表示可选项

//异步
fs.readFile('hello.txt',{flag:'r',encoding:'utf-8'},function(err,data){
    if(err){
        console.log(err);
    }else{
        console.log(data);
    }
    console.log(77);
})
console.log(333);

结果

PS D:\Node-projects\fs> node index.js
333
hello bunny
77

异步的封装 用promise来封装

//封装 
//如果是promise对象就可以进行封装
function fsRead(path){
    return new Promise(function(resolve,reject){
        fs.readFile(path,{flag:'r',encoding:'utf-8'},function(err,data){
            if(err){
                // console.log(err);
                //失败执行的内容
                reject(err)
            }else{
                // console.log(data);
                //成功执行的内容
                resolve(data)

            }
           // console.log(77);
        })
        //console.log(333);
    })
}

//封装好之后 读文件
var  w1 = fsRead('hello.txt')
w1.then(function(res){
    console.log(res);
})
//如果读多个文件
async function ReadList(){
    var file2 = await fsRead('hello.txt');
    console.log(file2);
    var file3 = await fsRead("hello2.txt");
    console.log(file3);
    var file3Content = await fsRead("hello3.txt");
    console.log(file3Content);
}
//有了这个就不用层层回调了
ReadList()

结果

PS D:\Node-projects\fs> node index.js
hello bunny
hello bunny
hello2:今天是2021.4.1

hello3

关于Nodejs的学习还会继续更新哦,文中如若有错误的地方,请大佬留言


在这里推荐一篇比较通俗易懂的Nodejs学习笔记的文档,帮助我理解了不少东西。好东西要分享一下:https://www.cnblogs.com/minjh/p/9531225.html.

1.Nodejs中文官网:http://nodejs.cn.
2.Nodejs API:http://nodejs.cn/api/.
3.npm中文网:
https://www.npmjs.cn.

上一篇下一篇

猜你喜欢

热点阅读