
nodeJs系统环境变量配置非常简单,请依次打开windows电脑的计算机-系统属性中的高级系统设置,点击环境变量按钮,为用户变量添加名为 NODE_PATH 的环境变量,点击新建按钮,依次输入环境变量名:NODE_PATH 和输入值即nodejs的本地安装目录,配置完之后点击确定。重新打开dos界面,输入:node -v验证nodeJs环境变量是否配置成功。
1 基于Nodejs内建的调试器
Nodejs提供了一个内建调试器来帮助开发者调试应用程序。想要开启调试器我们需要在代码中加入debugger标签,当Nodejs执行到debugger标签时会自动暂停(debugger标签相当于在代码中开启一个断点)。代码如下:
var path = urlparse(requrl)pathname;
debugger;
reswriteHead(200, {'Content-Type': 'text/plain'});
执行命令:node debug examplejs 就可以进入调试模式。
在debug模式下,可以使用内建命令如repl去评估变量和表达式的值(如2所示)。我们也可以通过help命令来获取完整的调试命令列表。
Commands: run (r), cont (c), next (n), step (s), out (o), backtrace (bt), setBreakpoint (sb), clearBreakpoint (cb),
watch, unwatch, watchers, repl, restart, kill, list, scripts, breakpoints, version
2 基于V8插件的调试器
Nodejs是基于google V8的引擎上构建的,Google为Eclipse提供了一个对应的调试插件。关于如何在Eclipse中安装和调试Nodejs程序就不再重复描述了。唯一要注意的是在默认情况下V8引擎支持的调试模式是本地模式。如果想要开启远程调试的话,我们需要修改Nodejs中的V8源文件:/deps/v8/src/platform-posixcc
addrsin_family = AF_INET;
addrsin_addrs_addr = htonl(INADDR_LOOPBACK); --> INADDR_ANY
addrsin_port = htons(port);
然后重新编译Nodejs。
提示:
用插件来调试nodejs程序,你有时候会遇到什么connect refuse, get version failed等等错误。那么请注意你使用的ip的地址, 一般下127001的回环地址是都工作的。如果你使用真实的ip地址,请检查防火墙设置。
3 基于Chrome浏览器的调试器
既然我们可以通过V8的调试插件来调试,那是否也可以借用Chrome浏览器的JavaScript调试器来调试呢?node-inspector模块提供了这样一种可能。我们需要先通过npm来安装node-inspector
npm install -g node-inspector // -g 导入安装路径到环境变量
node-inspector是通过websocket方式来转向debug输入输出的。因此,我们在调试前要先启动node-inspector来监听Nodejs的debug调试端口。
默认情况下node-inspector的端口是8080,可以通过参数--web-port=[port]来设置端口。在启动node-inpspector之后,我们可以通过--debug或--debug-brk来启动nodejs程序。通过在浏览器输入>
一、Express框架
前面的章节已经介绍过了,可以使用npm来安装nodejs模块。具体 *** 作请参照以前写的nodejs概论。
Express是一个nodejs的web开源框架,用于快速的搭建web项目。其主要集成了web的>
使用方法,在cmd中打开你所想创建web项目的路径。然后输入
Express appname
即可创建一个名为appname的web项目。控制台打印结果
在cmd中进入appname文件夹输入
node appnamejs
返回结果如下图,表示安装成功!
在项目开发中经常会出现这样的问题
此错误表示没有安装相关模块,解决办法是在cmd上打开项目文件夹,输入
npm install express
安装成功后会在本文件路径下生成一个node_modules,里面包含了Express框架代码。
其他模块也可用类似的方法进行安装,安装后的路径同样是在node_modules下。
二、jade模块
jade是一款高性能、简洁易懂的模板引擎。可通过jade来编写html文件。
jade类似一个用于快速编写html的语言,其编写后的文件后缀为jade。
以下为文件的内容
在cmd中输入,压缩的过的可以通过加-P来不压缩,如果每次更改模版都要打命令行一次很麻烦是不是,我们可以通过加上jade -P -w jadejade 加上一个-w来开启监视模式,每次更改模版,html文件都会自动编译咯
生成后的html文件如下:
在jada文件中是可以使用for循环和if判断语句的,可以让你体会类似JSP的<%%>和php的<php></php>在网页上输出数据的快感。
三、forever模块
nodejs作为>
1后台服务运行,监控运行日志,以及>
2确保项目的正常安全运行,Nodejs的启动命令node,很大程度无法满足运行需求;
Nodejs的forever模块在第二点就可以起到很大的作用,同时其拥有监控文件更改、自动重启等功能。
forever模块的使用方法有两种:1在命令行中使用
forever -l foreverlog -o outlog -e errlog appjs
-l foreverlog -o outlog -e errlog分别指定了forever的运行日志,脚本流水日志,脚本运行错误日志,启动后将在本文件夹下产生outlog、errlog文件。
2在编码中require forever模块使用。
四、SocketIO模块
SocketIO模块主要功能是将WebSocket协议应用到所有浏览器。主要用于实时的长连接多求情项目中。
例如:在线联网游戏,实时聊天、实时股票查看、二维码扫描登录等。
安装方法仍然是在cmd在中输入npm install socketio
如何使用SocketIO来创建一个项目。
需要分别实现服务端和客户端的逻辑:
先创建一个服务端的nodejs脚本index_serverjs
var app = require('>
其中,socketemit()为Socket发送消息的函数,第一个参数表示发送消息的key值,第二个参数为发送消息的内容,也就是发送的数据。
Socket。on()为Socket接收消息的函数,第一个参数为接收消息的可以值,第二个参数为回调函数,其中回调函数携带的参数为接收消息所发送的数据。
接下来web前端如何使用JavaScrit 来连接Socket服务器。
新建一个index_clienthtml
<script type="text/javascript" src="socketjs"></script>
<script type="text/javascript"> var socket = ioconnect('>
<script type="text/javascript" src="socketjs"></script>加载已经安装好的Socketio的本地JavaScrit文件。
var socket = ioconnect('>
socketio详细请参阅 >
五、request模块
request模块为开发者提供了一种简单访问>
安装:
npm install requset
request模块基本上覆盖了所有的>
get和post的区别
get:
1使用get向服务器发出和接收的请求会附在url之后。类似:>
2get请求不能超过1024个字节。
post没有限制,也不会附在url上。
接下来做一个简单的实例
get实例:
首先新建一个服务器app_getjs
var >
再建一个发送求情的request_getjs文件
var request=require('request');
requestget(">
在CMD中运行app_getjs,运行成功后,再打开一个cmd(之前的cmd不要关闭),执行request_getjs文件。
执行后的结果如下
hello world
GET
可以看出,通过requestget方法访问
>
var >
然后再新建一个request_postjs
var request=require("request");
requestpost('>
像上面一样在cmd中执行后显示的结果如下:
D:\nodejs\src\request>node request_postjs
{"name":"ermu","book":"nodejs"}
POST
request post提交了一个json对象{"name":"ermu","book":"nodejs"}而服务器接通过获取该POST数据,然后返回客户端,同时将>
request post参数可以有两种传递方式。
其中,第一种是将url和form表单的数据作为json参数在request post传递。举例如下:
requestpost('url':'>
另一种是将url和form作为两个参数,上面的实例就是使用这种方法。
六、 Formidable模块
该模块的目的是为了解决文件上传。
在原生的nodejs模块中,提供了获取post数据的方法,但是并没有直接获取上传文件。
前端日常开发中,会遇见各种各样的cli,比如一行命令帮你打包的webpack,一行命令帮你生成vue项目模板的vue-cli,还有创建react项目的create-react-app等等等等。这些工具极大地方便了我们的日常工作,让计算机自己去干繁琐的工作,而我们,就可以节省出大量的时间用于学习、交流、开发、 逛steam 。
但是有时候一些十分特别的需求,我们是找不到适合的cli工具去做的。比如说,你的项目十分庞大,你给项目添加一个新的路由,要经过 创建目录 -> 创建vue文件 -> 更新vue-router的路由列表 这一趟流程,就算快捷键创建目录文件用得再熟悉,也比不过你一行命令来得快,特别是路由目录嵌套深,vue文件初始化模板复杂的时候。
所以呢,何不为自己项目写一个cli?就专门做这些繁琐的活?
nodejs的cli,本质就是跑node脚本嘛,基本上每位前端er都会:
然后命令行调用
可以做得更逼真一点,我们在packagejson里面的scripts字段上添加一下脚本名:
然后命令行调用:
但是,看到这里你肯定会说,人家webpack还有vue-cli都是“有名字”的!什么 vue-cli init app 、 webpack -p 的,多漂亮,看看这个命令行, node indexjs ,还 npm run hello ,谁不会啊,丑不拉几的,怕又不是来水文章的哦?差评!!
别急啊各位大人,接下来就说说,如何给这个node脚本起个名字。
姑且,先把这个cli的名字命名为 hello-cli ,就是我们能够在命令行里面,输入 hello-cli ,然后它就打印一句 hello world ,没有 node 也没有 npm ,就是:
这样,你的第一个cli脚本就成功安装了,可以在命令行里面,直接敲你的cli名字,看看结果输出吧。
另外,如果你仅希望你的cli脚本仅在项目里执行,则需要在你项目里面新建一个目录,重复上述的 *** 作,只是在第三步的时候,不要llink到全局里面去,而是使用 npm i -D file:<你的脚本cli目录路径> ,把它当成项目的依赖安装到node_modules里面去,如果安装成功,那么在项目的packagejson你会看到多了一条依赖,这条依赖的值不是版本号,而是你脚本的路径。然后在node_modules里面会有一个bin目录,里面就存放着你的可执行文件。
当然,这样安装的cli脚本,必须在项目的packagejson的scripts字段上声明脚本命令,然后通过 npm run 的方式执行。
哦?这样子使用的话不就回到最最最开始的时候那种原始的 npm run hello 一样么。
是的,但是有质的区别。使用 node indexjs 这种方式调用的话固然简单灵活,但是严重依赖脚本路径,一旦目录结构发生变动,写在scripts的命令就要更改一次;但是使用npm安装之后,本地的cli脚本就被拉到node_modules里面,目录结构变动对其影响不大。其次是不利于分享与发布,如果你想把你的cli脚本发布出去,那么有一个好听响亮的名字,比起在说明文档里面告诉使用者如何找到你的脚本路径再用node执行它,简直好上那么一万倍不是么?
这里也给我们提供了一个cli开发流程思路:
名字有了,输出也有了,看看我们跟那些大名鼎鼎的cli工具,在形式上还差点啥?对了,人家可以支持不同参数选项的,还可以根据输入的不同,产生不同的结果。
这样吧,我们给这个cli加一个功能,既然叫 hello-cli ,那不能只会 hello world 吧,必须要见谁就说 hello 才行:
虽然这个功能很简单,但是至少也是实现了“根据输入的不同,产生不同结果”的效果。
命令行上的参数,可以通过 process 这个变量获取, process 是一个全局对象而不是一个包,不需要通过 require 引入。通过 process 这个对象我们可以拿到当前脚本执行环境等一系列信息,其中就包括命令行的输入情况,这个信息,保存在 processargv 这个属性里。我们可以打印一下:
打印结果:
可以看出,argv是个数组,前两位是固定的,分别是node程序的路径和脚本存放的位置,从第三位开始才是额外输入的内容。那么实现上面的功能就很简单了,只要读取argv数组的第三位,然后输出出来就可以了。
npm社区中也有一些优秀的命令行参数解析包,比如 yargs ,tj的 commanderjs 等等
如果你想使用比较复杂的参数或者命令,建议还是用第三方包比较好,手写解析太耗精力了。
现在,你可以自由自在的写你自己的cli脚本了。
如果你希望写一个项目打完包自动推上git的cli,或者自动从git仓库里面拉取项目启动模板,那么,你需要通过node的 child_process 模块开启子进程,在子进程内调用git命令:
不仅是git命令,包括系统命令、其他cli命令都可以在这里执行。特别是系统命令,使用系统命令对文件目录进行 *** 作,效率比fs高到不知道哪里去了。
社区上也有一些不错的包,比如阮一峰老师推荐的 shelljs
如果你不那么希望你的cli用起来那么“硬核”,希望更人性化一点,比如提供一些友好的输入、提示啊,给你的输出加点颜色区分重点啊,写个简单的进度条啊等等,那么你就需要美化一下你的输出了。
除了颜色这部分,不使用第三方包实现起来非常繁琐复杂,其他的功能,都可以试试自己写。
颜色部分使用了第三方包 colors ,这里就不演示了。
其他都是由nodejs自带的 readline 模块实现的。
绘制的思路跟canvas绘制动画一样,只不过canvas是清除画布,而命令行这里是通过 readlineclearScreenDown 清除输出。
这样,一个简易的,人性化的,带点点进度条动画的命令行cli工具就写好了,你也可以发挥你的想象力,去写一些更有趣的效果出来。
毕竟我们前端,有浏览器我们可以写动画,没了浏览器我们一样可以写动画。
以上就是关于配置nodeJs系统环境变量全部的内容,包括:配置nodeJs系统环境变量、nodejs 模块开发怎么调试、nodejs内置模块有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)