目录 |
1.常用的dos命令
2.客户端和服务器端的交互模式
3.url和http基础知识
4.初步了解node
5.在node环境中执行js代码
6.node中模块的基础知识
7.node内置模块中常用的方法
8.静态资源文件请求的处理
1.常用的dos命令 |
Windows+R,输入cmd,打开dom命令
1、查看自己电脑的ip地址:
ipconfig/ipconfig -all
2、实时查看自己的网络状态:
ping www.baidu.com -t
结束:ctrl+c
3、关闭dos命令窗口:
exit
4、清屏:
cls
5、返回文件夹的上一级目录:
cd ../
6、当前目录:
cd ./
7、返回当前磁盘的根目录:
cd /
8、进入某个磁盘:
D: (进入到D盘)
9、进入到某个文件夹:
cd 文件夹名称
10、查看文件夹下的目录:
dir
11、快速进入某个文件夹:
shift+右键:在此处打开命令窗口
12、创建一个文件夹
mkdir 名称
13、创建一个文件
echo > test.txt
2.客户端和服务器端的交互模式 |
建立网站步骤:
1.买一台服务器(云服务器),服务器连接上网络后,会存在一个外网IP地址,把开发的项目源文件(HTML/CSS/JS/IMG…)都上传到服务器上(FTP上传)
2.买一个域名
3.进行DNS解析(域名解析)。DNS是一个网络服务器,域名解析就是在DNS上记录一条信息记录。
记录:域名(www.*.com)、220.114.23.56(服务器外网IP地址)、80(服务器端口号)
当用户在浏览器中输入了一个网址,到最终看到页面和内容,发生了那些事情?
名词概念:
服务器的端口号:一台服务器上可以发布很多项目,而每一个项目都有自己对应的房间或者区域,服务器使用端口号来区分具体是哪一个项目。范围在0~65535.一般把项目发布到80/443这两个端口下
W3C:一个制定开发规范的非盈利性的组织
作为开发者是按照规范开发的,浏览器开发商一般也是按照W3C的规范开发浏览器的渲染引擎的。但是浏览器厂商总要凸显自己的与众不同,有些厂商把W3C规范实现之后又增加一些自己都有的东西,这就导致了在写代码的时候经常写-webkit-*。但是有些厂商为了凸显自己的不一样,就不按照规范来走自己的这一套,例如IE,这样就导致了编写的代码想要兼容所有的浏览器需要些多套,例如谷歌getComputed,IE currentStyle
引擎:
每一个浏览器都有自己的引擎,谷歌浏览器是V8引擎(webkit)、火狐是Gecko引擎,IE是Trident引擎
3.url和http基础知识 |
URL:统一资源定位符
一个完整的URL:
http://v.qq.com:80/index.html?name=abc&age=7#bbs
http:传输协议,客户端给服务器端的内容和服务器端传递给客户端的内容都是通过HTTP传输协议进行传输的
v.qq.com:域名
80:端口号
index.html:请求资源文件名,告诉服务器需要请求的资源文件是谁
?name=abc&age=7:URL问号传参,客户端传递给服务器端的内容(客户端可以把一些值传递给服务器端,服务器端依然可以把一些内容传递给客户端)
#bbs
:URL的hash(锚点定位)
传输协议:
HTTP:超文本传输协议,除了传输文本外还可以传输其他东西,例如:XML等
HTTPS:更加安全的超文本传输协议
FTP:文件传输协议,应用于把项目源文件传递到服务器上
在不指定服务器端口的情况下,每一种协议会有一个默认找的端口地址。HTTP默认会找服务器的80端口;HTTPS默认会找服务器的443端口;FTP默认会找服务器的21端口
URN:统一资源名称
URI=URL+URN:统一资源标识符(统一资源信息)
4.初步了解node |
JS目前不仅仅能在浏览器中运行,还能在node中运行
node是一个供js代码执行的环境,可以把它等价于浏览器,一把会把node环境安装到服务器端,这样的话就可以使用就是来编写程序了,也就是说js不仅仅是客户端的语言,也可以是服务器端的语言。
node和浏览器的区别:
node采用的是谷歌的V8引擎来渲染JS的,运行的速度快、稳定,并且编写的JS代码不需要考虑兼容
浏览器中的全局JS对象是window,而node下的全局对象是Global
浏览器是安装在客户端的,为了保护客户端的安全,基本上不可能提供用JS对客户电脑磁盘上的文件进行操作的功能。但是node环境中提供了对应的I/O操作(服务器上文件的操作),我们可以使用JS对服务器磁盘下的文件进行增删改查。
node提供给JS很多新的方法:http.createServer、fs.writeFileSync、fs.readFileSync…
node是基于事件驱动的,异步编程(在node环境下编写的js程序一般都是异步编程的)
5.在node环境中执行js代码 |
在命令窗口中执行:
在当前要执行的js文件目录下,shift+右键 => 在此处打开命令窗口 => node **.js 相当于把js代码在node环境中执行了
在node执行js代码和浏览器中执行的一样,如果js代码发生了修改,想要看到最新的效果需要重新执行对应的js文件
命令窗口 => node+enter键 然后开始编写对应的JS代码测试即可(RPEL命令操作),和在浏览器控制台写js代码一样 两次ctrl+c结束
6.node中模块的基础知识 |
内置模块
node天生提供的
http模块(createServer…)、fs模块(writeFileSync、readFileSync… )、url模块
自定义模块
自己定义的模块
在node环境中创建一个js文件,就相当于创建了一个模块,例如新建一个a.js相当于创建了a模块。如果需要提供一些方法给其他一些模块使用,需要通过module.exports把方法导出,例如在A模块中写了module.exports={fn:fn} / module.exports.fn-fn
。如果想在B模块中使用,需要先导入var a = require("./a");
,这样的话就可以调取A模块中导出的方法了,a.fn()
第三方模块
别人写好的模块拿来使用,在node中,如果需要使用别人的模块需要使用npm这个命令进行管理(http://www.npmjs.com/)
安装:npm install 第三方模块名称 -g(安装到node的全局环境中)
卸载:npm uninstall 第三方模块名称 -g
安装成功后在js中通过 var less = require("less");
把刚才安装的第三方模块导入到js中,这样的话就可以使用这个模块中提供的方法了。如:less.render
等
7.node内置模块中常用的方法 |
服务创建成功后,如何向服务器端发送请求?
在浏览器中输入http://localhost:端口号/
浏览器中输入http://本机的ip地址:端口号/
用webstorm预览会生成一个63342的端口
//导入三个常用的node内置模块:
var http = require("http"),
fs = require("fs"),
url = require("url"); //url模块提供了一个方法url.parse() 用来解析url地址
//1;HTTP:
//http.createServer创建一个服务,变量server就是创建出来的那个服务
var server = http.createServer(function (request, response) {
//当客户端向服务器端当前服务发送一个请求,并且当前服务已经成功接收到这个请求后执行这个回调函数
//requst(请求):存放的是所有客户端的请求信息,包括客户端通过问号传参的方式传递给服务器的数据内容
//request.url:存放的是客户端请求的文件资源的目录和名称以及传递给服务器的数据。例如:客户端请求的地址:http://192.168.0.32/index.html?name=abc&age=7 服务器通过request.url获取到的是/index.html?name=abc&age=7
//console.log(request.url);
var urlObj = url.parse(request.url, true),
pathname = urlObj.pathname,
query = urlObj.query;
if (pathname === "./1.html") {
//根据请求的URL地址(具体的是根据地址中的pathname)获取到对应资源文件中的源代码
//fs.readFileSync([path+name],[encode]):同步读取指定文件中的内容(同步读取:文件中的内容读取不完不执行下面的操作,只有都读取完才会执行后续的操作)
var con = fs.readFileSync("./1.html", "utf-8");
//response(响应):提供了向客户端返回内容和数据的方法
//response.write:向客户端返回内容
//reponse.end:告诉服务器响应结束了(一定要加)
reponse.write(con);
reponse.end();
}
});
//server.listen:为这个服务监听一个端口
server.listen(80, function () {
//服务创建成功,并且端口号监听成功之后执行这个回调函数
console.log("sever is create success,listening on 80 port!");
var url = require("url");
var str = "http://192.168.0.32:80/index.html?name=abc&age=7#bbs";
console.log(url.parse(str)); //得到一个对象,见下
/*
Url {
protocol: 'http:', 传输协议
slashes: true,
auth: null,
host: '192.168.0.32', 域名+端口
port: '80', 端口号
hostname: '192.168.0.32', 域名/ip
hash: '#bbs', 哈希值
search: '?name=abc&age=7', 问号+传递进来的数据
query: 'name=abc&age=7', 传递进来的数据
pathname: '/index.html', 请求文件的路径及名称
path: '/index.html?name=abc&age=7', 路径名称+传递的数据
href: 'http://192.168.0.32:80/index.html?name=abc&age=7#bbs' 原来请求的url地址
}
*/
//url.parse(str,true); true作用是query是经过处理解析后的结果,把传入进来的多组数据以键值对方式进行存储
8.静态资源文件请求的处理 |