一 node.js

1. 概念:node.js是基于Chrom的V8引擎的JavaScript的运行时(运行环境)。

2. 它只是一个环境 并不是一门编程语言。

3. 它可以做什么 ?

  • 后端API接口。基于Node.js环境 + Express框架

  • 桌面应用。基于Node.js环境 + Electron 框架

  • 操作数据库。基于Node.js环境 + MySql包 读写和操作数据库

  • 实用的命令行工具。基于Node.js环境,实现的 vuecli,webpack等

4. 了解终端

         需要输入命令操作电脑   cmd   powershell (电脑自带终端窗口)

         有些软件也需要通过输入命令执行 git   node

5. 常用的终端命令 

         cls     清屏

         dir/ls  显示当前文件夹下的内容

         cd\    进入当前盘的根目录

         cd..    进入上一级目录

         Ctrl+c 停止node程序

         cd文件名称 进入指定的文件

         :d 切换到d盘

         上下键头 调出历史记录

         tap 自动补全 含有切换功能

         右键 复制粘贴

         mkdir dirname  创建一个目录

6.在node.js中执行js代码

        首先先注意路径 确保路径没问题 

        在终端 执行node 文件名

7. node.js和浏览器端的相同点和区别

    相同点:都支持ECMAScript

     区别:node.js没有dom,bom.window

                浏览器也没有node.js的模块

8.node.js模块分类 

        1.内置模块 fs path http 

        2.第三方的模块

        3.自定义的模块

9.核心模块的使用

        1.导入

const 模块名 = require('模块名')
const 后面的名字可以自己起 但要符合规范 

        2.使用 调用它的方法

        模块名.方法

10. fs模块  filesystem 文件系统

常用的三种方法 

        1.读取文件 readfile('文件地址',['格式'],回调函数 )

                注意事项:文件地址为避免错误 最好写绝对路径 

                格式:可选项 不写输出 编码格式 写utf8 输出字符串格式 Buffer转字符串 toString()

                回调函数:两个参数 第一个参数一般代表错误 第二个代表数据

        2.覆盖写入 writeFile('文件地址','内容',['格式'],回调函数 ) 特点 会覆盖原有内容

                注意事项:文件地址同上 格式同上

                内容:一定是字符串或者Buffer格式 其他形式的内容需要转换 

                对象转字符串 JSON.stringify()

                回调函数只有一个参数 表示错误

        3.追加写入 appendFile('文件地址','内容',['格式'],回调函数 ) 特点 不会覆盖原内容

const fs = require('fs') 
覆盖写入 writeFile()
fs.writeFile('01.txt','111','utf8',function(err){
    if(err){
        return
    }
})
换行 \n
fs.writeFile('01.txt','111\n222','utf8',function(err){
    if(err){
        return
    }
})
写入对象
let obj = {a:1,b:2}
// JSON.stringify() 将对象转为字符串 
fs.writeFile('01.txt',JSON.stringify(obj),'utf8',function(err){
    if(err){
        return
    }
})
----------------------------- 追加写入--------------------------
// appendFile() 追加写入
fs.appendFile('02.txt','111\n222','utf8',function(err){
    if(err){
        console.log('err',err);
        return
    }
})

11. path模块 路径

我们需要了解两个全局变量 

__dirname  获取当前被执行的文件所在的文件夹的绝对路径

__filename  获取当前被执行的文件所在绝对路径

常用的方法

        1.拼接 join

        2.后缀名  extname

        3.文件名 basename

path模块在读写文件时拼接地址 const filePath = path.join(__dirname, '相对地址')

console.log(__dirname);  //文件所在目录的地址
console.log(__filename); //文件地址
const path = require('path')
// 获取文件名basename()
let p = path.basename('D:/软件/新建文件夹 (2)/应用/桌面/Desktop/node.js第一天/06.path路径.js')
console.log(p);
// 后缀名 extname()后缀名带点
console.log(path.extname('index.html'));
// 拼接 join()
console.log(path.join('a','b','/c'));

二 模块化和包

1. 模块化 一个js文件引入另一个js文件 当前文件可以使用引入模块化的功能

2. 解决的问题 变量污染 代码维护困难 

3. es5之前 并没有模块化 我们需要借助第三方库来实现模块化 比如(sea.js   require.js 

4. es6之后 开始支持模块化

5. 模块化的规范:

  • CommonJS 规范:nodejs中遵守的就是commonjs规范。

  • ES6 模块化规范:(前后端通用的模块化规范;Node.js、Vue、React 中都能使用!)

  • CMD 和 AMD 模块化规范(较少使用): CMD--sea.js, AMD-require.js

  • UMD 叫做通用模块定义规范(Universal Module Definition),它可以通过运行时或者编译时让同一个代码模块在使用 CommonJs、CMD 甚至是 AMD 的项目中运行。它没有自己专有的规范,是集结了 CommonJs、CMD、AMD 的规范于一身。

6. CommonJS 规范

        ①导入其它模块时,统一使用 require() 函数。

        ②每个 .js 文件,都是一个独立的模块,模块内的成员都是私有的。

        ③在每个 JS 模块中,使用 module.exports 向外共享成员。

7. 自定义模块规范

        不要用特殊的文件名

        导入模块的路径是相对路径

        导入之后,记得console.log

        记得导出

8 . 两种导出方式 

  • exports

  • module.exports

   两者关系:

        初始exports和module.exports是指向同一块内存区域,其内容都是一个空对象

        exports是module.exports的别名

   在引入某模块时:以该模块代码中module.exports指向的内容为准。

 npm 包

1. 什么是npm  npm 全称 Node Package Manager(node 包管理器) 解决第三方共享的问题

2. 参考网站 npm官网

3. npm强大之处在于将所有的第三方的工具库整合起来 例如 jQuery, bootStrap,echarts.js 都可以在npm中免费下载使用

4.当我们下载代码时,他们是以的结构放在npm网站上

5.npm下载使用包 三个步骤

  1. 初始化项目 (新建一个空文件夹 不能起中文名字)进入项目所在根目录下 打开cmd 在这里写命令  
npm init --yes
// --与yes之间没有空格, -- 与init之间有空格
// 或者是 npm init -y

init命令生成一个package.json文件,这个文件记录的当前项目的基本信息

     2.下载安装包  命令 npm install 包名

npm install xxx

 前两步完成文件夹会多出这几个文件

      3. 使用 const 常量名 = require('包名'

// 从npm下载 别人写的好代码,在本地引入,并使用
const dayjs = require('dayjs')
console.log(dayjs);
console.log( dayjs().format('YYYY-MM-DD') );

package.json文件

它一般是由npm init命令创建出来的,它的整体内容是一个json字符串,用来对当前项目进行整体描述。其中最外层可以看作是一个js的对象(每一个属性名都加了"",这就是一个典型的json标记)

 我们需要了解:

  • name: 表示这个项目的名字。如是它是一个第三方包的话,它就决定了我们在require()时应该要写什么内容。

  • version:版本号

  • keywords:关键字

  • author: 作者

  • descrption: 描述

node_modules文件夹

        这个文件夹中保存着我们从npm中下载来的第三方包。

6.npm镜像-让下包更快

镜像就是拷贝 默认情况下,从npm官方下载,网速比较慢;我们可以去它的镜像网站上来下载。

怎么设置镜像

# 设置镜像为taobao。
npm config set registry https://registry.npm.taobao.org
# 设置镜像为npm官方
npm config set registry https://registry.npmjs.org
# 查看配置
npm config get registry 

1.分类 

 全局包安装 包被安装到了系统目录(一般在系统盘的node_modules中)

命令:`npm install -g 包名` 或者  `npm install 包名 -g`

辅助命令 
npm root -g // 查看全局包的安装目录
npm list -g --depth 0 //查看全局安装过的包

项目安装(或者叫本地安装),包安装在当前项目的根目录下(与package.json同级)的node_modules中。 命令:npm install 包名

全局包和项目包的区别

  • 全局安装的包一般可提供直接执行的命令。我们通过对一些工具类的包采用这种方式安装,如:

    gulp, nodemon, live-server,nrm等。

  • 本地安装的包是与具体的项目有关的, 我们需要在开发过程中使用这些具体的功能。

2.全局安装nrm包 作用  调整npm镜像

// 第一步: 全局安装 
npm install nrm -g

// 第二步:列出所有的源信息
// (*)标注的就是当前使用的源
nrm ls

// 第三步:根据需要切换源 
// 例如:指定使用taobao镜像源
nrm use taotao

3.项目包又分开发依赖包和生产依赖包

只要我们的项目上线不再需要这个包 这个包就叫开发依赖包 比如 gulp-htmlmin。这个工具是用来把html代码进行压缩的(去掉空格,换行等),我们需要在开发时使用它,而项目一旦上线,我们就不再需要它了

项目上线依然需要这个包 这个包就是生产依赖包 比如  jquery。在开发时参与源码编写,在发布上线的生产环境中也是需要它的。不仅在开发环境编写代码时要依赖它、线上环境也要依赖它

具体操作 

        保存到开发依赖(devDependencies)

npm install 包名 --save-dev
// 或者 npm install 包名 -D

        保存到生产依赖(dependencies):

npm install 包名
// 或者 npm install 包名
// 或者 npm install 包名 -S

上传一个包到npm

我们写了一个很牛逼的功能 想把它放到npm供其他人使用 该怎么做

1 npm项目初始化

在本地磁盘创建一个空项目 名字不能和npm官网上的重名

检查方式

npm view 包名
# 这个命令用来查看 某个包的信息
# 如果返回404,说明这个项目名在npm官网上找不到,此时你就可以使用。
# 否则,说明不可用。

2 完成功能开发 写上你牛逼的代码 注意导出

3 切换当前npm源到官网 使用nrm工具 切换命令 nrm use 名字

4 连接npm 第一次连接需要

npm adduser

这个命令需要输入三个信息以供连接上npmjs:

  • 用户名

  • 密码

  • 邮箱(是你在npmjs官网上注册时使用的信息)

  通过 npm who am i 命令检查自己是否连接成功

退出  npm logout

5 把包上传到npm 

npm publish 

如果成功

npm notice
npm notice package: tool61@1.0.0
npm notice === Tarball Contents ===
npm notice 1.3kB index.js
npm notice 220B  package.json
npm notice === Tarball Details ===
npm notice name:          tool61
npm notice version:       1.0.0
npm notice package size:  855 B
npm notice unpacked size: 1.5 kB
npm notice shasum:        3bfba7bc92e242810a850ac39ded7ebe992a6d9c
npm notice integrity:     sha512-VoRuxxbcGzXen[...]v3tKWYUT1B1AQ==
npm notice total files:   2
npm notice
+ tool61@1.0.0 版本号

删除包

npm unpublish --force //强制删除
npm uninstall 本地安装的包名
npm uninstall 全局安装的包名 -g

更新包

  1. 修改代码,保存。

  2. 更新版本号。可直接在package.json中修改:只能改大,不能改小。

  3. 重新publish

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值