NodeJS相关笔记(一)

1.前端与后端
◆前端:做静态资源的
◆后端:操控服务器的硬件的



2.为什么学习node.js
◆就业有市场
◆有商业用途
◆本身技术是有价值
◆js开发
◆使用node.js最好使用双数版本,单数版本不会长期维护,双数版本都会长期支持,所以安装node最好都安装双数版本,如4、6、8这样的。


3.js引擎
◆汽车引擎:转化的作用,就像汽油柴油等等经过转化之后变成动能
◆js引擎:模板和数据转化为页面
◆浏览器引擎:将js代码转化为机器码\字节码



4.nodejs就是将js引擎套一个壳子,写js代码传给js引擎,然后操作硬件。
◆nodejs是一门技术,它使用的语言叫js。
◆nodejs是靠V8引擎去解析js的。
◆nodejs优点:事件驱动、无阻塞IO、轻量级运行速度快
◆npm是世界上最大的一个包管理网站,装了nodejs就自带npm。
◆V8引擎底层还是用的是C++,使用了libuv,libuv是c++的一个库。
◆nodejs定义了很多全局的对象,这些全局对象相当于nodejs内置的API,相当于浏览器里面也有内置很多API、如bom、dom、location、history、window等等。
◆nodejs和seajs一样也是模块儿的,比如它们都用require来引入其它模块儿,也用module.exports来向外暴露属性或者方法。







5.不同浏览器对javascript实现的方式
◆Firefox(火狐):SpiderMonkey引擎
◆IE:JScript引擎
◆Safari:JavaScriptCore引擎
◆Chrome:V8引擎
◆Microsoft Edge:ChakraCore引擎


6.nvm(nodejs 版本管理工具)、npm(nodejs 程序管理工具)、nrm(npm的数据源管理工具),3m安装法
◆nvm安装(window)【
◇首先在https://github.com/coreybutler/nvm-windows/releases下载安装包
◇安装一路确定即可,途中指向的nodejs要选择你nodejs目录。
◇实际上不需要你配置环境变量,当然你也可以自己配置
◇点击我的电脑,右键选择属性,再选择高级系统设置,找到环境变量按钮并点击。
◇看到用户变量之后,看看有没有NVM_HOME和NVM_SYMLINK,如果没有,就自己新建,NVM_HOME的值就是你nvm文件夹,NVM_SYMLINK的值就是你nodejs文件夹
◇弄好以上两个之后,在PATH中加上;%NVM_HOME%;%NVM_SYMLINK%;,就可以了,不然你加上两个变量的绝对路径也行,是一样的。
◇配置完毕开始使用。

◆nrm安装:npm install -g nrm




7.nvm命令
◆nvm install 版本号 :下载指定版本的nodejs,将nodejs需要的文件下载到nvm文件夹目录中去
◆nvm uninstall 版本号:卸载已经下载的指定版本的nodejs,在nvm文件夹目中去删除
◆nvm -h :帮助文档(help)
◆nvm list 或者nvm ls:显示你安装的一系列nodejs的版本
◆nvm use 6.10.3(nodejs版本号):切换到已经安装的nodejs版本
★nodejs的版本可以到https://nodejs.org/en/download/releases/中去找
◆相关的命令等解释可以到https://segmentfault.com/a/1190000007612011中去找。



8.cmd命令(windows操作系统命令行)
★文件或者文件夹自动补全,输入文件或者文件夹部分名称然后使用tab键,最后就会自动补全,多按几下tab或不停的切换匹配到的名称。
◆cd 文件夹名称:进入到文件夹或者切换目录
◆D:、E:、F:、C::表示切换到指定的盘中。
◆mkdir 文件夹名或者 md 文件夹名:(make directory)  创建一个文件夹
◆rd 文件夹名:(remove directory) 删除文件夹
◆del 文件名:(delete) 删除指定文件
◆dir:列出当前目录中所有的内容
◆ren 原文件名 新文件名:(rename) 改变文件名
◆cls|clear:(clear screen)清屏,清除命令行界面所有旧的命令
★其它命令可以参考:https://jingyan.baidu.com/article/f0e83a25f2659a22e59101b5.html



9.云服务器
◆私人的电脑为什么不能够作为服务器,因为你只有内网的ip,并没有外网的ip,所以别人请求不到你这里。
◆DNS域名解析,解析之后得到的是一个外网的ip,不能解析到内网的ip
◆阿里云->产品->弹性计算->云服务器ECS
◆计费方式选择包年包月->地域选择华东1->架构选择x86计算->分类选择入门级->选择90-200之间的一台服务器->镜像选择ubuntu或者CoreOS->版本64位->然后选择购买市场一个月或者几个月->点击下一步->....
◆然后去下载一个连接服务器的工具,如xshell,之后就可以操作服务器了。



10.全局安装后,可以全局调用的原理
◆我的电脑->属性->高级系统配置->环境变量
◆修改用户变量里的PATH,添加文件目录路径
◆然后你通过命令来调用你安装的软件的时候
◆先去命令行当前目录中去找,如果找到就执行
◆如果没有找到就去环境变量里配置的用户变量,在PATH中字符串写的那些文件目录去找对应的软件执行程序,如果找到了就调用
◆如果还是没有找到,那么就会去环境变量里配置的系统变量,也是PATH中字符串写的那些文件目录中去找对应的执行程序,如qq、node等等,如果找到了就调用,系统变量表示所有的用户都能够使用,用户变量是说只有这个用户才能够使用。
◆如果三个地方都没有找到,那么就不找了,最后就无法调用,命令行中会返回该命令不存在的提示信息。
◆就算你没有使用全局安装,但是如果自己配置全局的环境变量,那么也能够做到全局调用。


11.REPL(Read-eval-print-loop) 运行环境
◆用来测试一下代码的,repl和chrome的控制台很像
◆通过在控制台中输入node敲回车就可以进入REPL 运行环境了。
◆通过在REPL运行环境中 连续按两下Ctrl+C就可以退出 REPL 运行环境。
◆可以当作是谷歌浏览器的控制台



12.nodejs的使用
◆node code\hello.js:直接执行code目录下的hello.js文件。
◆nodejs里有一个global对象,相当于浏览器里面的window对象,但是区别是global并不只属于某一个js文件,相当于C#里的Application对象一样,并不只属于一个网页,所有网页都可以用,但是不建议那么去用,global.a=123;和a=123的定义是一致的。
◆console.assert();断言,一般用于调试【
var foo=123;
//一千行逻辑代码
console.assert(foo==123,"逻辑错误,foo!=123");
】,如果foo==123就直接通过,加入foo不等于123了,那么没有通过就会直接报错,然后给出console.assert中的提示语,谷歌浏览器中也能够使用。
◆console.time('标记名');console.timeEnd('标记名');,必须成对出现,用于记录代码运行的时间,用于测试性能【
console.time('test');
var sum=0;
for(var i=0;i<100;i++) {
  sum+=i;
}
console.timeEnd('test');
】,谷歌浏览器中也能够使用。
◆__dirname:表示获取当前文件所在的路径(不包括文件名)
◆__filename:表示获取当前文件所在的路径并且加上文件的名称(文件的绝对路径)
◆在nodejs中每一个js文件就是一个模块儿,相当于在seajs中define一个模块儿一样,向外暴露也是和seajs中一样,使用module.exports或者exports来向外暴露属性或者方法,也是通过赋值的方式。
◆在nodejs中引入其它的模块儿,方式也是和seajs一样,通过require('./add.js');来进行引入,会返回一个对象,你接收一下就可以了。
◆process是一个全局可用对象,是用来与当前正在启动的node进行交互的【
◇process.version取版本号在控制台做标准输出
◇process.stdout.write(`123123`);
◇process.pid:当前进程的进程号。
◇process.version:Node的版本,比如v0.10.18。
◇process.platform:当前系统平台,比如Linux。
◇process.env:指向当前shell的环境变量,比如◇process.env.HOME,可以看到你配置的所有环境变量。
◇process.stdout:指向标准输出。
◇process.stdin:指向标准输入。
◇process.stderr:指向标准错误。

◆nodejs官网里的文档中的globals有很多全局对象。




13.高级API工具,开发人员的标配
◆Zeal:离线的情况下也可以查资料,window操作系统下也能够使用。
◆Dash:在mac操作系统使用
◆Velocity:离线的情况下也可以查资料,window操作系统下也能够使用。




14.面试阶段
◆第一阶段:你说它听,然后它顺便看看你的简历。
◆第二阶段:它问你答,这个阶段是你可以控制的地方,它会先问你的长项,你要制造一个长项出来,要把长项突出出来,然后会追着你的短项一直问,但是你的短项你也得说,短项你也可以准备。
◆第三阶段:你问他答,把你擅长的再突出出来,弥补之前的不足
◆第一份简历什么都要写上去,然后针对不同的公司进行删改,要有针对性,如果它公司有些技术你不会,那么你可以花十分钟了解一下这门技术有哪些优势劣势等等信息,这样你简历上就可以写了解或者说使用过,做过哪些demo。
◆记住天龙八部里面的小无相功,其实并没有真正去学少林七十二绝技,但是小无相功也是一种速成法,小无相功是针对少林七十二绝技。





15.nodejs的Module对象和require方法
◆Module是在运行的时候分配一个对象给它,用来记录一些信息。
◆require方法操作的时候其实是去硬盘中去读js文件,然后放入module对象里,所以当去读相同的js文件时,会直接去缓存中拿之前的Module.exports,不会再去执行那个相同的js文件中的其它代码了,也正是因为如此,所以nodejs才高效。
◆Module是一个对象,当一个模块儿引入其他模块儿的时候,那么这个模块儿就是根,id是一个小点儿。
◆每一个Module都有 id、exports、parent、filename、loaded、children、paths这几个属性【 ◇id:表示入口文件,如果是根入口,那么就会用一个.来表示
◇exports:表示向外暴露的属性或者方法
◇parent:表示父级模块儿,谁引入当前这个模块儿,那么父级模块儿就指向谁,没谁引入值为null
◇filename:表示当前模块儿对应的文件
◇loaded:当前模块儿是否加载完毕
◇children:表示子模块儿集合
◇paths:表示所有node_module的路径,用于系统核心模块儿使用的时候进行查找,或者文件模块儿的包查找





16.传智播客老师写的工具,可以在npm中搜索到,可以去官网搜。
◆fast-init:是一个快速初始化模板的工具,首先你写一个模板文件,然后f -i 文件名@自定义标识名,这样你就添加了一个模板,你可以通过f -u 自定义标识名来下载这个模板到当前目录中,f -l 可以查看所有的已经添加的模板,f -d 自定义标识名 可以删除你添加的模板。
◆express-generator:是一个自动生成项目的工具,但是项目是空的,就是给你准备了一些基本的目录和文件,npm install -g express-generator是安装,然后使用express,就能够自动生成到当前目录中去。



17.angularjs控制器之间相互传参
◆子控制器给父控制器传参:子控制器通过$scope.$emit('to-parent','要传的内容');//$emit叫事件发射器,很像事件冒泡的原理,父控制器通过$scope.$on('to-parent',function(event,data){
console.log(data);//data就是子控制器传递过来的数据,to-parent是一个事件。
})
◆父控制器给子控制器传参:父控制器通过$scope.$broadcast('to-child','要传的内容');//$broadcast叫做向下广播,向它的儿子发送数据,子控制器通过$scope.$on('to-child',function(event,data){
console.log(data);//data就是父控制器传递过来的数据,tochild是一个事件
})
◆当前控制器给平级控制器传参:给父容器传参,父容器再给子容器传参,这样就能够平级给平级传参了。









猜你喜欢

转载自blog.csdn.net/jwllwj_2018/article/details/80621455