• Node教程——入门


    一、node入门

    (一)、 首先我们需要下载安装

    1.说实话就是一个代码的运行环境,我们下载是下载稳定版LTS后缀 下载完之后就一顿安装就完事

    (二)、 明确一点,还有简单的运行

    我们的ECMAScript依然是万物的核心,node的组成就是ESCA 还有Node模块
    所有的语法都是js的,

    node执行方式:在同级的文件夹下node XXX.JS就能运行了

    (三)、 Nodejs模块花开发

    ’模块化开发‘是一种软件开发方式

    • js有弊端,文件与文件依赖不明确.命名冲突导致代码覆盖

    • 使用模块化开发方式就可以解决这个问题

    1. nodejs开发的模块开发规范

    nodejs中 一个js就是一个模块
    默认不会导入模块内的东西
    我们使用exports可以到处当前模块里的东西(变量啊 )
    我们在另一个文件我们需要使用的话就用require就行了

    核心:exports对象里面就保存了你先要到处的属性(函数也是属性本质上来说)
    在另一个模块里 requerti就是返回以恶express对象,这样我们模块之间就能实现通信了

    示例代码
    a模块

     const add = (n1, n2) => n1 + n2;
    exports.add = add; //这个的意思就是到出
    

    b模块

    //const a = require('./03.module-a.js');
    //这个是可以去掉js的
    const a = require('./03.module-a'); //它是由返回值的,值= 穷啊hi前模块中的experson对象
    console.log(a);
    console.log(a.add(10, 20));
    
    

    除了exports还有什么样的方式导出呢?
    1.exprots
    2.方式
    module.exports.version = version;
    module.exports.sayHi = syHi;

    exports对象还有moudle.exports
    这两个都是一个对象地址的引用

    注意: 当exports对象和moudle.exports对象指向的不是同一个对象时 以module.exports为准

    我们的导入操作依然没有变化:require('./04.module.exports.js'); 注意这个js后缀可以去掉,这里导入是相对路径

    代码举例:

    
    const greeting = name => `hello ${name}`;
    
    
    
    const x = 100;
    exports.x = x;
    module.exports.greeting = greeting;
    // 当exports对象和moudle.exports对象指向的不是同一个对象时 以module.exports为准
    module.exports = {
            name: 'zhangsan'
        }
        // 这样的话 你这样的写就错了我们不以这个为准我们以exports为准
    exports = {
        age: 20
    }
    

    (四)、 Node的一些重要的系统模块

    • 文件模块fs

    功能:
    1.读取文件的模块
    2.写入文件
    3.创建文件夹

    1. 使用举例:读取文件
    代码规范: fs.redFile('路径(注意)',[文件编码],callback)//文件编码是可选项
    
    // 1.通过模块的名字fs对模块进行引用
    // 模块的名字是很重要的, 因为在node中, 一些系统的api是也要遵循node引入规范的
    const fs = require('fs');
    //这样你就拿到了,一个可以处理文件的fs对象了 这个对象就可以处理各种各样的文件
    
    // 2.通过模块内部的readFile读取文件内容
    //代码实例:fs.redFile('路径(注意)',[文件编码],callback)
    // 这个[]表示这个参数是可选的
    fs.readFile('./01.helloworld.js', 'utf8', (err, data) => {
        // 如果文件读取出错err 是一个对象 包含错误信息
        // 如果文件读取正确 err是 null
        // doc 是文件读取的结果
        console.log(err);
        console.log(data);
    });
    
    
    1. 使用举例:写入文件(通常是用来收集错误日志)
    代码规范: fs.writeFile('写入到哪儿去(是一个包含文件的路径名)','即将写入的内容',callback)
    
    const fs = require('fs');
    
    //1.由于你这个fs.writeFile是一个耗时的操作,故而不能拿变量去接受
    //重要如过demo,txt不存在 我们就自动创建一个
    fs.writeFile('./demo.txt', '即将要写入的内容', err => {
        if (err != null) {
            console.log(err);
            return;
        }
        console.log('文件内容写入成功');
        // 第三个callback还是非常重要的
    })
    
    • 系统模块path

    为什么有这个?因为我们得服务器可能再window还有linux下运行,而我们的linux的路径符号是不一样的,为了解决这个东西于是乎这个东西就诞生了

    path不是一个耗时操作 我们可以直接拿到返回值,这个返回值就是拼接好的路径字符串
    1.语法

    path.join('路径','路径','....')
    

    2.代码实例

    path不是一个耗时操作 我们可以直接拿到返回值,这个返回值就是拼接好的路径字符串
    const path = require('path'); //引入!!引入!
    
    const finalPath = path.join('public', 'uploads', 'avatar');
    
    这个返回值会自动根据系统的不同 ,变成不同的路径出来
    

    相对路径是有问题的:它相对的是当前的命令行窗口

    注意,在大多数Node服务器开发我们一般都是做成绝对路径

    3.获取当前文件的绝对路径的一个属性
    __dirname这个属性里面就保存了当前js文件所在的绝对路径

    
    const fs = require('fs');
    const path = require('path');
    
    console.log( __dirname);
    
    console.log(path.join(__dirname, '01.helloworld.js'))
    
    fs.readFile(path.join(__dirname, '01.helloworld.js'), 'utf8', (err, doc) => {
        console.log(err)
        console.log(doc)
    });
    
    
    

    (五)、 常见的第三方模块

    所谓的第三方模块都是别人做好的’轮子‘。他们都在一个文件夹里面

    第三方的模块存在的形式
    1.以js文件存在,里面对外暴露了一些API接口 ,通过这个接口你就可以很方便的搞到它里面的功能

    2.命令行功能的形式存在,什么意思呢?就是这种模块的使用 ,是通过命令行输入命令实现的,这也是大多是CLI脚手架的实现方式

    • 获取第三方模块

    我们在npm上存储还有发布模块,只要你想 你也就可以发布,这个npm有一个网站,有兴趣你可以去看看

    npm全称 'node pack mannerge'

    在node安装的时候 npm工具已经 附在其中了,
    使用的方式:npm install XXX 这个XX就是你想要的模块名字

    1.使用举例

    • 安装 formidable包
      npm install formidable,敲击回车就完事,默认的下载到的地址就是当前的文件夹目录 ,里面有一个node_modules文件夹,这些包都会下载到这个文件夹里面

    同时我们还有package-lock.json文件 这里面记录了当前项目所用的所有的包信息,
    在你移值或者发生项目给别人的时候 你不必发生整个项目,你可以不发送node_modules文件夹,上传到git也是一样 ,一般是不上传这个文件夹。
    我们根据package-lock.json就可以完成node_modules里面的所有依赖包的安装

    命令:npm install

    • 卸载 formidable
      npm uninstall formidable

    • 全局安装
      安装有两种一种是:本地安装,一种是全局安装
      所谓的全局就是安装一起 全局都可以用 ,每一个项目都可以用
      对应的本地安装就是仅限当前项目使用

    • 安装一个重要的全局的包 nodemon

    这个东西 ,是提供自动刷新的功能,只要文件有改动它就会自动更新
    使用nodemon举例:

    命令行下:nodemon XXX.JS ,此时命名就挂起了;这样只要XXX.js文件发生改动 ,控制台就会自动的刷新控制台,

    全局安装nodemon

    npm install nodemon -g
    
    • 如何断开这个挂起的操作?ctrl+c就可以了

    • 再来一个包nrm

    作用 改变下载的网站,原生的npm在国外下载,在国内我们需要换一个下载地址,这个nrm就是来干这个事的

    安装

    npm install nrm -g
    查询可用的国内下载地址nrm ls
    切换npm下载地址 nrm user

    nrm user taobao回车就完事

    • 安装一下gulp
      还是一样的操作流程
      npm install gulp
      注意我们不要-g 因为我们的gulp是库文件的形式安装,只在当前项目下能使用

    讲一下这个gulp是什么:这是基于node的前端构建工具
    什么是构建工具呢?
    意思就是你可以拿这个东西去做一些重复性的工作,比如
    压缩html js css代码
    es6语法的转换(转化为es5)
    less转css
    抽取公共文件部分
    游览器的自动刷新...我们还有好多的骚操作,这点的内容我们将会在下一讲给大家讲解:

  • 相关阅读:
    pdf文件预览实现
    RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054 问题解决
    Git、GitHub、GitLab三者之间的联系及区别(转)
    html中:befoer和:after用法(转)
    html中box-shadow用法(转)
    js/vue实现滑块验证(方法3)
    vue实现滑块验证(使用awsc实现)(方法1)
    js/vue实现滑块验证(组件形式,可重复调用)(方法2)
    js实现图片上传
    【英语】IT English (随时更新...)
  • 原文地址:https://www.cnblogs.com/BM-laoli/p/12655116.html
Copyright © 2020-2023  润新知