node.js 快速笔记
npm的常用指令修改镜像源为淘宝镜像源npm install -g cnpm --registryhttps://registry.npm.taobao.org设置为默认源npm config set registry http://registry.npmjs.org查看npm配置信息npm config list查看所有包列表npm list [-g]安装npm模块npm install Module_name [-g]如安装web框架 expressnpm install Module_name卸载npm模块npm uninstall Module_name升级npm模块npm update Module_name查找npm模块npm search Module_name创建npm模块npm init查看指令帮助npm help command_namenpm install 的几种类型npm install :会把Module包安装到node_modules目录中不会修改package.json之后运行npm install命令时不会自动安装Modulenpm install –save:会把Module包安装到node_modules目录中会在package.json的dependencies属性下添加Module之后运行npm install命令时会自动安装Module到node_modules目录中之后运行npm install–production或者注明NODE_ENV变量值为production时会自动安装msbuild到node_modules目录中npm install –save-dev:会把Module包安装到node_modules目录中会在package.json的devDependencies属性下添加Module之后运行npm install命令时会自动安装Module到node_modules目录中之后运行npm install–production或者注明NODE_ENV变量值为production时不会自动安装Module到node_modules目录中使用原则:运行时需要用到的包使用–save否则使用–save-dev (dev表开发环境)。npm 全局安装及本地安装的却别如npm install webpack -g与npm install webpack却别在使用时全局安装使用时这时:$ webpack ...本地安装为:$ node_modules/.bin/webpackNode.js介绍Node.js 是一个事件驱动I/O或者事件驱动IO 服务端JavaScript环境Node.js 是单进程单线程应用程序Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。Node.js REPL(交互式解释器)Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境类似 Window 系统的终端或 Unix/Linux shell$ nodevarx0undefineddo{...x;...console.log(x: x);...}while(x5);x:1x:2REPL常用命令ctrl c - 退出当前终端。tab 键 - 列出当前命令.help - 列出使用命令.clear - 退出多行表达式.save filename - 保存当前的 Node REPL 会话到指定文件.load filename - 载入当前 Node REPL 会话的文件内容。Node.js EventEmitterNode.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列一个 net.Server 对象会在每次有新连接时触发一个事件 一个 fs.readStream 对象会在文件被打开的时候触发一个事件。 所有这些产生事件的对象都是 events.EventEmitter 的实例。如何使用// 引入 events 模块vareventsrequire(events);// 创建 eventEmitter 对象vareventEmitternewevents.EventEmitter();// 绑定一个匿名事件eventEmitter.on(bing_event,function(arg1,agr2){console.log(bing_event 事件被触发:arg1,agr2);});// 定义另一个事件处理方法varbing2_eventfunction(){console.log(bing2 事件被触发);eventEmitter.removeAllListeners(bing_event);console.log(所有监听bing_event的都移除了);}// 绑定一个已定义的事件处理方法到 bing_event中eventEmitter.on(bing_event,bing2_event);setTimeout(function(){eventEmitter.emit(bing_event,a1,a2);},1000);varlistenerNeventEmitter.listenerCount(bing_event);console.log(bing_event监听者数为listenerN);console.log(run end!);模块系统为了让Node.js的文件可以相互调用Node.js提供了一个简单的模块系统。一个文件就是一个模块该文件可能是 JavaScript 代码、JSON 或者编译过的C/C 扩展。// Hello.jsfunctionHello(){varname;this.setNamefunction(thyName){namethyName;}this.sayHellofunction(){console.log(Hello,my name is name);}}module.exportsHello;// index.jsvarHellorequire(./Hello);hellonewHello();hello.setName(Bing);hello.sayHello();console.log(demo end.);函数在JavaScript中一个函数可以作为另一个函数的参数。我们可以先定义一个函数然后传递也可以在传递参数的地方直接定义函数。Node.js中函数的使用与Javascript类似functionsay(msg){console.log(msg);}functionexec(sayFun,msg){sayFun(msg);}exec(say,hello js Function.);同样exec中的sayFun参数也可传递匿名函数.util实现对象继承(util.inherits)util.inherits(constructor, superConstructor) 是一个实现对象间原型继承的函数。varutilrequire(util);// 定义父类functionBaseObj(){this.namebaseObj;this.base1887;this.sayHellofunction(){console.log(Hello This is this.name);};}// 给父类添加定义原型方法BaseObj.prototype.showNamefunction(){console.log(this.name);};// 定义子类functionSubObj(){this.namesubObj;}// 使SubObj 继承 BaseObjutil.inherits(SubObj,BaseObj);varbaseObjnewBaseObj();baseObj.showName();baseObj.sayHello();console.log(baseObj);varsubObjnewSubObj();subObj.showName();//objSub.sayHello(); //这个方法无法输出会报错应该sayHello不是BaseObj的原型方法即不是通过BaseObj.prototype来定义的。console.log(subObj);注意SubObj 仅仅继承了BaseObj 在原型中定义的函数而构造函数内部创造的 base 属 性和 sayHello 函数都没有被 SubObj 继承。同时在原型中定义的属性不会被 console.log 作 为对象的属性输出。util.inspectutil.inspect(object,[showHidden],[depth],[colors]) 是一个将任意对象转换 为字符串的方法通常用于调试和错误输出。它至少接受一个参数 object即要转换的对象。showHidden 是一个可选参数如果值为 true将会输出更多隐藏信息。depth 表示最大递归的层数如果对象很复杂你可以指定层数以控制输出信息的多 少。如果不指定depth默认会递归2层指定为 null 表示将不限递归层数完整遍历对象。 如果color 值为 true输出格式将会以ANSI 颜色编码通常用于在终端显示更漂亮 的效果。特别要指出的是util.inspect 并不会简单地直接把对象转换为字符串即使该对 象定义了 toString 方法也不会调用。Node.js 文件系统异步的 fs.readFile() 和同步的 fs.readFileSync()varfsrequire(fs);// 异步读取fs.readFile(input.txt,function(err,data){if(err){returnconsole.error(err);}console.log(异步读取: data.toString());});// 同步读取vardatafs.readFileSync(input.txt);console.log(同步读取: data.toString());console.log(程序执行完毕。);Node.js GET/POST请求Get请求,如何获取表求的url信息varhttprequire(http);varurlrequire(url);varutilrequire(util);http.createServer(function(req,res){// 解析 获取url参数varparamsurl.parse(req.url,true).query;//true为解析为对象访问参数console.log(params);// 完成原生的urlconsole.log(req.url :req.url);// 获取干净的url不带参数varpathnameurl.parse(req.url).pathname;varreHtmlYour URL : req.url\n;reHtmlURL pathname : pathname\n;reHtmlURL Params :url.parse(req.url).query;res.writeHead(200,{Content-Type:text/plain; charsetutf-8});res.end(reHtml);}).listen(8888);console.log(server is running ...);Post请求如何获取body内容POST 请求的内容全部的都在请求体中http.ServerRequest 并没有一个属性内容为请求体原因是等待请求体传输可能是一件耗时的工作。比如上传文件而很多时候我们可能并不需要理会请求体的内容恶意的POST请求会大大消耗服务器的资源所以 node.js 默认是不会解析请求体的当你需要的时候需要手动来做。varhttprequire(http);varquerystringrequire(querystring);varpostHTMLhtmlheadmeta charsetutf-8titlePost 实现/title/headbodyform methodpost网站名 input namenamebr网站 URL input namevaluebrinput typesubmit/form/body/html;http.createServer(function(req,res){varbody;req.on(data,function(chunk){bodychunk;});req.on(end,function(){// 解析参数bodyquerystring.parse(body);// 设置响应头部信息及编码res.writeHead(200,{Content-Type:text/html; charsetutf8});if(body.namebody.url){// 输出提交的数据res.write(namebody.name);res.write(br);res.write(valuebody.url);}else{// 输出表单res.write(postHTML);}res.end();});}).listen(8888);console.log(server is running ...);

相关新闻

实战指南:三步构建绝区零全自动游戏助手

实战指南:三步构建绝区零全自动游戏助手

实战指南:三步构建绝区零全自动游戏助手 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 绝区零作为一款快节奏的…

2026/10/29 8:49:08 阅读更多 →
2026年香精香料行业PLM系统盘点:主流产品助调香与合规提效

2026年香精香料行业PLM系统盘点:主流产品助调香与合规提效

一、产业迭代提速:2026香精香料行业数字化现状与痛点1.1 行业数字化发展现状2026年上半年,国内香精香料行业依托生物合成、AI调香技术加速转型升级,向精细化、合规化方向发展。据中研产业研究院半年报数据,行业市场规模同比增长6.…

2026/10/28 2:38:01 阅读更多 →
低代码开发如何提升后端配置效率与实战技巧

低代码开发如何提升后端配置效率与实战技巧

1. 低代码开发如何让后端配置变得高效 早上十点半,同事看我悠闲地喝着咖啡,以为我又在摸鱼。殊不知,我已经用JNPF低代码平台完成了三个后端模块的配置。这种误解在传统开发模式下很常见——非技术人员往往看不到后台的代码逻辑,而…

2026/10/28 3:14:00 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/28 23:48:14 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/29 8:45:01 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/28 9:02:11 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/28 22:10:30 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/28 9:00:54 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/29 8:44:28 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 16:58:40 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/29 9:42:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/28 19:25:09 阅读更多 →