维护网站一年多少钱,ppt设计报价,怎么查看网站的外链,网站建设与运营课程总结学习视频#xff1a;尚硅谷2023版Node.js零基础视频教程#xff0c;nodejs新手到高手 文章目录 #x1f4da;path模块#x1f4da;Node.js模块化#x1f407;介绍#x1f407;模块暴露数据⭐️模块初体验⭐️暴露数据 #x1f407;导入文件模块#x1f407;导入文件夹的… 学习视频尚硅谷2023版Node.js零基础视频教程nodejs新手到高手 文章目录 path模块Node.js模块化介绍模块暴露数据⭐️模块初体验⭐️暴露数据 导入文件模块导入文件夹的情况导入模块的基本流程CommonJS规范 path模块 //导入 fs
const fs require(fs);
const path require(path);
//写入文件之前提到过可以借助__dirname规范绝对路径但其实不是很好
//fs.writeFileSync(__dirname /index.html, love);//resolve拼接规范分隔符统一的绝对路径
console.log(path.resolve(__dirname, ./index.html));
//可以不写./也表示绝对路径
console.log(path.resolve(__dirname, index.html));//sep获取操作系统的路径分隔符
console.log(path.sep); // windows下是\Linux下是///parse解析路径并返回对象
//console.log(__filename); //获取文件的绝对路径
let str C:\\Users\\lalayouyi\\Desktop\\node\\03_path模块\\代码\\path.js ;
console.log(path.parse(str));//basename快速获取文件名
console.log(path.basename(str));//dirname获取路径的目录名
console.log(path.dirname(str));//extname获取路径的扩展名
console.log(path.extname(str));Node.js模块化
介绍 模块暴露数据
⭐️模块初体验
创建me.js//声明函数
function lala(){
console.log(啦啦啦....);
}
//暴露数据
module.exports lala;创建index.js//导入模块
const lala require(./me.js);
//调用函数
lala();⭐️暴露数据 模块暴露数据的方式有两种 module.exports valueexports.name value //me.js
//声明一个函数
function lala(){console.log(lalala...);
}function lolo(){console.log(lololo....);
}//暴露数据一
module.exports {lala,lolo
}//exports暴露数据二
exports.lolo lolo;
exports.lala lala;//index.js
//导入模块
const me require(./me.js);//输出 me
console.log(me);
me.lala();
me.lolo();module.exports可以暴露任意数据。 //me.js
module.exports iloveyou521;//导入模块
const me require(./me.js);
//输出 me
console.log(me);不能使用exports value的形式暴露数据模块内部 module 与 exports 的隐式关系exports module.exports {} require 返回的是目标模块中module.exports的值。 //不能使用 exports value的形式暴露数据
//exports iloveyou //最后的输出是{}也就是只会得到一个空对象//exports module.exports {}
console.log(module.exports);//{}
console.log(module.exports exports);//true导入文件模块 在模块中使用require传入文件路径即可引入文件。 require使用的一些注意事项 对于自己创建的模块导入时路径建议写相对路径 且不能省略 ./ 和 …/。js 和 json 文件导入时可以不用写后缀c/c编写的 node 扩展文件也可以不写后缀但是一般用不到。如果导入其他类型的文件会以 js 文件进行处理。导入node.js内置模块时直接require模块的名字即可无需加 ./ 和 …/。 //导入模块
const tiemo require(./me.js);
//调用函数
tiemo();//省略后缀 JS
const tiemo1 require(./me);
tiemo1();//导入 JSON 文件
const duanzi require(./duanzi);
console.log(duanzi);//对象//导入其他类型的文件
const test require(./test);
console.log(test);导入文件夹的情况
如果导入的路径是个文件夹则会 首先检测该文件夹下package.json文件中 main 属性对应的文件如果存在则导入反之如果文件不存在会报错。如果 main 属性不存在或者 package.json不存在则会尝试导入文件夹下的index.js和index.json如果还是没找到就会报错。 针对这个main属性相关大数据实验实操中就有不少类似的main不对应导致的报错应该还对应之后的包管理 导入模块的基本流程 p72视频讲解指路 require导入自定义模块的基本流程 将相对路径转为绝对路径定位目标文件。缓存检测。读取目标文件代码。包裹为一个函数并执行自执行函数。通过arguments.callee.toString()查看自执行函数。缓存模块的值。返回module.exports的值。
/*** 伪代码* 理解为node.js里require的实现*/
function require(file){//1. 将相对路径转为绝对路径定位目标文件let absolutePath path.resolve(__dirname, file);//2. 缓存检测if(caches[absolutePath]){return caches[absolutePath];}//3. 读取文件的代码let code fs.readFileSync(absolutePath).toString();//4. 包裹为一个函数 然后执行let module {};let exports module.exports {};(function (exports, require, module, __filename, __dirname) {const test {name: 尚硅谷}module.exports test; //输出console.log(arguments.callee.toString());})(exports, require, module, __filename, __dirname)//5. 缓存结果caches[absolutePath] module.exports;//6. 返回 module.exports 的值return module.exports;
}const m require(./me.js);CommonJS规范
module.exports 、 exports 以及 require 这些都是 CommonJS 模块化规范中的内容。而 Node.js 是实现了 CommonJS 模块化规范二者关系有点像 JavaScript 与 ECMAScript。