NODE - 基础知识及环境配置

回顾一下 - 访问网址过程:

1.在浏览器地址栏中输入网址。
2.浏览器通过用户在地址栏中输入的URL构建HTTP请求报文。
3.浏览器发起DNS解析请求,将域名转换为IP地址。
4.浏览器将请求报文发送给服务器。
5.服务器接收请求报文,并解析。
6.服务器处理用户请求,并将处理结果封装成HTTP响应报文。
7.服务器将HTTP响应报文发送给浏览器。
8.浏览器接收服务器响应的HTTP报文,并解析。
9.浏览器解析HTML页面并展示,在解析HTML页面时遇到新的资源需要再次发起请求。
10.最终浏览器展示出了页面。

 

什么是WEB开发:

//WEB开发的过程
请求 - 客户端发起请求
处理 - 服务器处理请求
响应 - 服务器将处理结果发送给客户端
形象点儿:单机应用就是,自己的事情自己做;WEB应用就是,干什么都找妈妈。
 
//C/S和B/S的区别
C/S(Client/Server)与B/S(Browser/server):
C/S:客户端/服务器,有独立客户端。
B/S:浏览器/服务器,没有独立客户端,通过浏览器来访问。
优缺点对比:B/S的部署和维护都比较方便,但是可能不够流畅。C/S的部署和维护不够方便,但是可能更加流畅。

 

Node.js的概况:

//Node.js是一个开发平台
开发平台:有对应的编程语言、有语言运行时、有能实现特定功能的API(已经封装好的、可以直接调用的功能)。
Node.js平台对应的编程语言:JavaScript。

//Node.js平台可以做什么
Node.js平台是基于Chrome V8 JS引擎构建的,基于Node.js可以开发控制台程序(命令行程序、CLI程序)、桌面应用程序(GUI、需要借助node-webkit\electron等框架实现)、Web应用程序。
PHP开发技术栈 - LAMP:Linux、Apache、MySQL、PHP
Node.js开发技术栈 - MEAN:MongoDB、Express、Angular、Node.js
 
//Node.js有哪些特点
事件驱动:当事件被触发时,执行传递过去的回调函数。
非阻塞I/O模型:当执行I/O操作时,不会阻塞线程。I/O是“输入/输出”的意思,可以是文件读写或者网络读写。
单线程
拥有世界最大的开源库生态系统:npm,内置的API是有限的,但是基本上我们能想到的功能都有人写好了,放在npm这个代码仓库上,都能拿来直接用,就类似于jquery的一大堆插件。

 

Node.js与PHP等传统模式的区别:

 

卸载全局安装的 node/npm:

//傻瓜式安装法
在官网上下载的node安装包,运行后会自动安装在全局目录。

//命令式卸载法
如果已经安装了node,可能会对nvm版本控制产生影响,所以先卸载掉原来的安装
打开Finder,按shift+command+g,分别输入并删除下列文件和文件夹:
如果使用了 brew install node 安装NodeJS,要在终端中执行 brew uninstall node 命令来卸载
打开 /usr/local/lib,删除 node 和 node_modules 相关的文件和文件夹
打开 /usr/local/include,删除 node 和 node_modules 相关的文件和文件夹
检查个人主文件夹下所有 local、lib 以及 include ,删除所有 node 和 node_modules 相关文件及文件夹
打开 /usr/local/bin 并删除 node 可执行文件

//额外指令,确保删除的更彻底 sudo rm /usr/local/bin/npm sudo rm /usr/local/share/man/man1/node.1 sudo rm /usr/local/lib/dtrace/node.d sudo rm -rf ~/.npm sudo rm -rf ~/.node-gyp sudo rm /opt/local/bin/node sudo rm /opt/local/include/node sudo rm -rf /opt/local/lib/node_modules
//由此可以记住一个Linux命令 rm 文件路径 删除该文件 rm
-rf 文件路径 删除该文件路径下的所有文件 rm -rf ~/ ~/可以视作模糊查询

 

安装nvm实现node的版本管理:

//安装nvm(OS X中)
如果已经安装了X-Code,可以直接运行X-Code命令:
xcode-select --install
如果没有安装X-Code,也可以在终端汇总用下面的命令:(我用的这种,成功啦)
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
 
//通过nvm安装多个版本的node,并进行版本切换
为什么要用nvm进行版本管理:
在mac中,npm安装的模块路径均为 /usr/local/lib/node_modules
当使用n命令(TJ大神发明的node版本切换命令)切换版本时,实际上回共用全局 node/npm 目录
因此不能很好的满足,按照不同node版本使用不同全局 node 模块的需求,所以乖乖用nvm吧
帮助命令:
nvm --help 显示帮助
列出可用的node版本:
nvm ls 列出本地已经安装的可用node版本
nvm ls-remote 列出远端可以使用的node版本(这个命令贼慢)
安装和卸载:
nvm install <版本号> 安装某个版本的node,例如:nvm install v9.11.0
nvm uninstall <版本号> 卸载某个版本的no
临时切换版本:
nvm use <版本号> 临时切换版本,只在当前终端有效,新开终端无效
永久切换版本:
nvm alias default <版本号> 永久切换版本,新开的shell中生效,已经打开的shell不生效
nvm alias default node 不写版本号,默认使用最新安装的版本
使用特定版本node,执行特定命令:
nvm run <版本号> <js文件名>.js
nvm exec <版本号> node <js文件名> .js
nvm exec <版本号> <正常node命令>
nvm exec <版本号> npm run  <npm命令名>
其中,run就相当于exec node,剩下的就好理解了

 

配置环境变量:

用上面的方法,可以成功的在全局环境下安装Node.js,按理说是不需要配置环境变量的,但还是说一下。
配置环境变量的意义:
假设我们在C:/根目录下安装了Node.js,此时命令行环境停留在D:/根目录,我们想要启动C:/根目录下的Node.js。
将Node.js命令的环境变量配置为C:/根目录,这样在执行命令行时就会首先在D:/根目录寻找,找不到后就会去环境变量配置的地址寻找。

 

在REPL中上路:

//什么是REPL
全称:Read-Eval-Print-Loop(交互式解释器)
R - 读取:读取用户输入,解析输入的JS数据结构并存储在内存中。
E - 执行:执行输入的数据结构。
P - 打印:输出结果。
L - 循环:循环操作以上步骤,直到用户两次按下ctrl-c按钮退出。

//启动和退出
如何进入:
在REPL中编写程序,类似于浏览器开发人员工具中的控制台空能。
直接在控制台输入 node命令,就可以进入 REPL环境。
如何退出:
按住 control键 不要放开,然后按两下 c键。
注意:REPL这个执行环境对ES6支持的很好,可以直接进入REPL编写代码对ES6的特性进行测试。

 

第一个例子:

目的:了解怎样编写和执行Node.js程序
案例:做加法

//test.js
var m = 100;
var n = 10;
function add(x,y){
return x+y;
}
var result = add(m,n);
console.log("运行结果是:"+result);

//执行
假设test.js在/Users/yananli/Downloads目录
进入文件所在目录:cd /Users/yananli/Downloads
用node命令直接执行:node test.js
结果:控制台输出了 “运行结果是110”

 

API阅读小技巧:

//模块间的区别
process模块 在使用的时候无需通过 require() 加载,fs模块 在使用的时候必须通过 require() 加载,var fs = require("fs");。
这是因为,process模块 是全局模块,可以直接使用,fs模块 不是全局模块,必须加载才能使用。
可以在API中的 Globals目录,查询有哪些是全局模块。

//API级别
Stability - 0:(红色)表示已经废弃,不建议继续使用
Stability - 1:(橙色)表示正在试验,以后可能更新
Stability - 2:(绿色)表示稳定,建议使用

 

MySql的安装和配置(扫雷游戏🙄):

//第一个坑:版本问题
目前官网给出的版本,只支持 Mac OSX 10.14的系统。
不想升级系统,又想安装MySQL的话,就问别人拿安装包吧。
亲测:安装错误的版本会启动不了🙃。

//第二个坑:临时密码过期
解决方案:修改密码
命令:/usr/local/mysql-5.7.12-osx10.11-x86_64/bin/mysql -uroot -p
Enter password:输入已经过期的那个临时密码就行,然后回车
进入 mysql monitor
命令:alert user 'root'@'localhost' identified by 'root';
顺利将密码改成 root

 

posted @ 2018-11-05 13:33  月亮和电池  阅读(422)  评论(0编辑  收藏  举报