1.起因
不管学习什么都是有一个理由的,此次node的学习也是不例外,首先对于node我是接触过的,之前有一篇没写完的iceplayer的文章中就使用过node,但是这并不是系统化的学习,所以为此在好好写这一篇文章前,首先就要写几篇关于node的笔记。
在本章中我们将会学习如何安装node,并使用node开启一个http服务。
下面正文:
2. 准备工作
首先需要安装node,由于我是osx ,同时网上也没有介绍关于osx的安装教程,所以此次优先介绍osx的安装。
2.1 通过homebrew安装
值得一提的是:
npm的安装并不是必须的,并且npm源在国内通常无法使用,所以建议切换成淘宝cnpm。 淘宝源链接
同时淘宝源上自带教程,再次就不多赘述了,此外还要一种pkg的下载方式,具体可以上 node 官网查看
其余系统的设置可以自行百度,大致没有什么问题,不过需要注意一下的是,如果还在使用xp系统有可能会碰到xp系统导致的专属bug,建议使用vista或win7以上系统。
3. 创建一个hello world程序
在使用node前先让我们创建一个测试目录
将文件内部输入一下代码
这里需要注意的是请 确保自己在test目录下 ,当然为了避免错误使用 ~/test/test.js 做路径也是完全可行的
如果没出错的话下面就会显示一行hello world
4. 那么下面我们就可以编写第一个node程序了
4.1 引入 http 模块
这一步的作用是引入一个 http 模块,并将这个模块定义为 http。
require是node里面重要的一环,通过require我们可以不用全部自己制作轮子,转而通过npm来安装需要的js,并载入,那么require是怎么实现的呢?
4.1.1 require函数的实现
在我看来实现一个require函数应该是直接将一个javascripe文件引入一个匿名函数中封装起来,然后赋值给需要的目标,这样可见的是至少应该是下面这个样子
然而实际上是这样的
当然咯这个requirejs是对内部的一个modulejs的一个简单封装,核心是modulejs,这里有空再分析。
4.2 创建一个http服务
学过前端的同学应该都是知道request和respond的所以不多解释。这个是官方给的例子,我稍稍做了一些修改,具体的文档可以参见httpserver
下面是最后的效果
目前我们没有指定推出命令,所以只能在命令行中按下ctrl+c退出。
4.3 创建一个标准的web服务器
当然这个服务是不合理的因为还没有添加任何访问文件的方法
然后接下来就是创建一个index.html的文件了
然后在index.html文件中写下如下内容
ok然后运行一下访问http://127.0.0.1:8888/index.html
即可看到hello world就说嘛访问成功。
下面详细解释一下几个函数
4.3.1 URL Parsing url解析
具体内容参考至官方url的文档
具体表现为我们在上面使用的url.parse(request.url).pathname这一段
当我们在开头require url后,我们就可以使用下面的内容了,左边是指url.parse(urls).param
param | return | 备注 |
---|---|---|
href | ’http://user:pass@host.com:8080/p/a/t/h?query=string#hash’ | 全url |
protocol | ’http:‘ | 请求类型(拿官方的话就是:网络数据交换规则) |
slashes | true or false | 是否使用反斜杠语法 |
host | ’host.com:8080’ | host |
auth | ’user:pass’ | 验证类型(用户名:密码) |
hostname | ’host.com’ | 主机名称 |
port | ’8080’ | 端口 |
pathname | ’/p/a/t/h’ | 路径 |
search | ’?query=string’ | search |
path | ’/p/a/t/h?query=string’ | 全路径 |
query | ’query=string’或者{‘query’:‘string’} | 参数(我一般这么叫具体官方怎么说不清楚) |
hash | ’#hash’ | 位置标识符(这个东西叫法很多,而且包含美元符号$) |
4.3.2 fs.readFile()
这是个系统函数,可以参考这里readfile 文件系统,这个函数的完整参数是这样的fs.readFile(file[, options], callback)。
这段话 fs.readFile(pathname.substr(1), function (err, data) {...}
这样会读取文件,err 会返回两个情况,假设读取到文件就会返回 true,反之false。
于是就对应下面response里面的 200 和 404 。
值得注意的是这是一个非同步方法,具体可以自行查找官方文档。
至此第一章结束,下面不定期更新后面章节。
本文标题:[nodejs]第一章基础的node教学
永久链接:https://iceprosurface.com/2016/05/29/2016/2016-05-29-base-of-node-1/
作者授权:本文由 icepro 原创编译并授权刊载发布。
版权声明:本文使用「署名-非商业性使用-相同方式共享 4.0 国际」创作共享协议,转载或使用请遵守署名协议。