美文网首页
小白学习笔记:入门Nodejs(1)

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

作者: 一只小小小bunny | 来源:发表于2021-04-01 19:20 被阅读0次

    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.

    相关文章

      网友评论

          本文标题:小白学习笔记:入门Nodejs(1)

          本文链接:https://www.haomeiwen.com/subject/qsstkltx.html