目录
什么是Node.js
Node.js特性
浏览器环境与node环境
Node.js与浏览器的差别
CommonJS规范
CommonJS的modules模块化规范写法
暴露文件内容
暴露文件(函数)
导入文件(函数)
暴露文件(对象)
导入文件(对象)
Node.js命令
npm
命令
注意:
关于package.json
全局安装nrm
中国NPM镜像
yarn
对比npm的优点
ES模块化
使用前
导入与导出模块
导出模块
导入模块
导出多个模块
导入多个模块
多个import导入
模块在浏览器上的加载
导入js文件
导入css文件
Node.js是一个javascript运行环境。他让javascript可以开发后端程序,实现几乎其他后端语言实现的所有功能。
Node.js是基于V8引擎,V8是谷歌发布的开源javascript引擎,本身就是用于Chrome浏览器的js解释部分,但是Ryan Dahl将这个V8搬到服务器上,用于做服务器的软件,因此Node.js可以解析js代码
注意:Blink内核能够对于HTML/CSS中的DOM进行排版解析,确定每一个元素的位置
我们可以把公共的功能抽离成一个单独的js文件作为一个模块,默认情况下面这个模块里的方法或属性外面是没法访问的(针对require方法,不针对script标签)。如果要让外部可以访问模块里的方法或者属性,就必须在模块里通过exports或modlue.exports暴露属性或者方法
暴露:module.exports=test
将test方法直接暴露出去
注意:这种方式只能暴露a.js的一个方法,如果暴露多个的话,后面方法的会将前面的方法覆盖
暴露a.js文件的多个方法
暴露:module.exports={test:test,run:run}或简写:module.exports={test,run}
注意:后面是对象形式,暴露test,run方法
暴露:(第二种写法)
export.test=test
expoet.run=run
注意:这里的暴露第一个为导入的值可以随意写名称,第二个为导出的值不可以随意写名称
//a.js内
function test(){
console.log("test-aa");
}
function run(){
console.log("我要飞的更高");
}
module.exports={test,run}
导入:var a=require("./a")
导入a.js文件
//导入a.js文件
var a=require("./a")
console.log(a);//{ test: [Function: test], run: [Function: run] }
a.run()//我要飞的更高
// add.js文件内
const add={
msg:"hello add"
}
module.exports={addChange: add}
var get=require("./add.js")
console.log(get.addChange.msg);
注意:
查看node.js版本:node -v
执行js文件:node .\文件名
退出当前命令:ctrl+c
含义:node.js的包管理器,用于node插件管理包括安装、下载、管理依赖(package.json)
npm uninstall 包名 (卸载对应模块)
NRM(npm registry manager)是npm的镜像源管理工具,有时候国外资源太慢,使用这个可以快速的在npm源之间切换
手动切换方法:npm config set registry https://registry.npm.taobao.org
查看镜像源:npm config get registry
安装nrm:npm install -g nrm
查看版本:nrm -V
使用nrm:nrm ls查看可选源,其中带*的是当前使用的源
切换nrm:若切换到淘宝——nrm use taobao(taobao为源)
测试速度:nrm test
这是个完整的npm.js,org镜像,你可以用此代替官方版本,同步频率为10分种一次以保证尽量与官方服务同步
npm install -g cnpm --registry=https://registry.npmmirror.com
安装yarn:npm install -g yarn
注意:先用npm来安装下来,然后再取代npm(npm泪奔)
项目内执行:npm init
package.json内添加属性:"type": "module"
//module.js文件内
const moduleA={
//模块A
}
export default moduleA//默认导出
import moduleA from "./module/module.js";//导入modeleA
console.log(moduleA)
注意:default导出方式只能导出一个模块,通过这种导出方式,那么导入的名字可以随意写(对于导入/导出函数同样适用)
//module.js文件内
const moduleA={
//moduleA模块
}
const moduleB={
//moduleB模块
}
export {moduleA,moduleB}//导出想要导出的模块
import {moduleA,moduleB} from "./module/module.js";//导入modeleA
console.log(moduleA)
console.log(moduleB);
注意:以{}形式导出可以导出多个模块也可以导出一个模块,但是不管导入多少模块都需要加{}进行导入,并且导出和导入的名字必须一样(对于导入/导出函数同样适用)
//test1.js文件内
console.log("test1");
//test2.js文件内
console.log("test2");
//test3.js文件内
import "./test1.js"
console.log("test3");
import "./test2.js"
执行:node .\test3.js
注意:
//add.js内
const add=(x,y)=>{
return x+y
}
export default add
/* style.css文件内 */
p{
color: blue;
}
/* pattern.css文件内 */
p{
text-align: center;
}
// add.js文件内
//这里的assert{ type: "css"}用于提示js引擎导入的是css文件
import styles from "./style.css" assert{ type: "css"}
import patterns from "./pattern.css" assert{ type: "css"}
//应用css到文档中
document.adoptedStyleSheets=[styles,patterns];
主页面
我是一段话
注意:
解决:线上去拉一个http server
命令:npx http-server
npx可以实现,当我们某一个模块不存在的时候,它可以从互联网上安装一个模块,如今我们安装http server模块
访问:http://localhost:8080/
当然,你也可以直接安装live server插件直接文件内右键open with live server更方便