NodeJS相关笔记(一)

1.前端与后端 ◆前端:作静态资源的 ◆后端:操控服务器的硬件的 ◆ 2.为何学习node.js ◆就业有市场 ◆有商业用途 ◆自己技术是有价值 ◆js开发 ◆使用node.js最好使用双数版本,单数版本不会长期维护,双数版本都会长期支持,因此安装node最好都安装双数版本,如四、六、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是一个事件 }) ◆当前控制器给平级控制器传参:给父容器传参,父容器再给子容器传参,这样就可以平级给平级传参了。 ◆ ◆ ◆
相关文章
相关标签/搜索