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
抽取公共文件部分
游览器的自动刷新...我们还有好多的骚操作,这点的内容我们将会在下一讲给大家讲解:

原文地址:https://www.cnblogs.com/BM-laoli/p/12655116.html