使用Node.js 创建Web 应用与使用PHP/Java 语言创建Web应用略有不同。

使用PHP/Java 来编写后台代码时,需要Apache 或者 Nginx 的HTTP 服务器,而接受请求和提供对应的数据和HTML页面是由服务器来做的,根本不需要PHP或者Java 来做处理,而Node.js则大有不同。

Node.js 没有严格的将前端和后台服务器分离,而且前端使用Node.js来编码,后台部分也依然是使用Node.js来编码,也不需要Apache 或者 Nginx 这样的HTTP 服务器。只需要在终端将关键的后台文件启动即可。

创建第一个Web 应用

在我们创建 Node.js 第一个 “Hello, World!” 应用前,让我们先了解下 Node.js 应用是由哪几部分组成的:

1. 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。

  1. 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。

  2. 接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。

学习一门新的语言,肯定少不了要写一个Hello World工程。那我们如何用Node.js来写一个Hello World呢?

1、终端命令学习

首先,我们需要学习一些终端的命令,因为待会的工作都是在终端中执行的。

* 新建文件夹 *

使用 mkdir + 文件夹路径,其中最后一个节点是文件夹的名称 ,示例:

mkdir /Users/harvey/Desktop/Study

这个命令,就是在我的桌面创建一个叫Study的文件夹。

* 进入指定的文件夹 *

cd + 文件夹路径,其中文件夹的路径可以找到文件夹,输入cd 后,将文件夹拖进终端,示例:

bogon:~ harvey$ cd /Users/harvey/Desktop/Study
bogon:Study harvey$

进入文件夹后,文件夹会显示在用户名称前,比如上面的Study 就是文件夹名称。

返回到上一级目录是:cd ..

* 新建一个文件 *

这个命令,使用vim 命令创建比较简单。

只需要 vim + 文件名,如果文件不存在,则会新创建改文件,如果文件已存在,则打开该文件。

vim server.js

输入完上述命令后是这样的:



此时,是vim 的编辑模式,想要在server.js中写入内容需要进入插入模式。

命令是:a



然后就可以输入想要输入的内容了。

我这里输入的是:

var http = require('http');

http.createServer(function (request, response) {

        // 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'}); // 发送响应数据 "Hello World"
response.end('Hello World\n');
}).listen(8888); // 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');

上面的内容可以复制,粘贴到终端。

* 退出插入模式 *

这里有两种方式:

Esc或者 Ctrl + c都可以退出插入模式。

* 保存并退出 *

退出插入模式后,保存并退出是两个命令合并的。

* 保存 *

:w

* 退出 *

:q

所以,保存并退出是:

:wq

2.运行服务端

node server.js

输入上述命令后,终端会有如下提示:

Server running at http://127.0.0.1:8888/

接下来,打开浏览器访问 http://127.0.0.1:8888/,你会看到一个写着 “Hello World”的网页。



到这里,第一个web 应用就完成了。

关于Node.js 的更多内容,可以去看:Node.js 中文教程

而关于Node.js 的所有API,可以去看:官方文档

Node.js 撸第一个Web应用的更多相关文章

  1. Fenix – 基于 Node.js 的桌面静态 Web 服务器

    Fenix 是一个提供给开发人员使用的简单的桌面静态 Web 服务器,基于 Node.js 开发.您可以同时在上面运行任意数量的项目,特别适合前端开发人员使用. 您可以通过免费的 Node.js 控制 ...

  2. node.js之十大Web框架

    之前接触过Node.js是因为好奇大前端越来越能干了,连我后台的饭碗都要抢了,太嚣张了,于是我想打压打压它,然后就这样接触它了.再到后来是因为Settings-Sync插件二次开发,我需要用node. ...

  3. Koa--基于Node.js平台的下一代web开发框架的安装

    koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架. 使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函 ...

  4. Node.js 从零开发 web server博客项目[express重构博客项目]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  5. Node.js 从零开发 web server博客项目[koa2重构博客项目]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  6. Node.js 从零开发 web server博客项目[安全]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  7. Node.js 从零开发 web server博客项目[日志]

    web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...

  8. Node.js结合Selenium做Web自动化测试

    发现腾讯课堂上有个node.js结合Selenium做Web自动化测试的教学视频, 听来感觉不错,一来老师讲的还不错,二来node.js这门语言会越来越热,学会总没什么坏处,三来发现CukeTest这 ...

  9. Koa -- 基于 Node.js 平台的下一代 web 开发框架 koa.bootcss.com

    Koa -- 基于 Node.js 平台的下一代 web 开发框架 koa.bootcss.com

随机推荐

  1. [LeetCode] Range Module 范围模块

    A Range Module is a module that tracks ranges of numbers. Your task is to design and implement the f ...

  2. react源代码重点难点分析

    网上已经有不少react源码分析文档,但都是分析主流程和主要功能函数,没有一个是从reactDOM.render()入口开始分析源码把流程走通尤其是把复杂重要的细节环节走通直到把组件template编 ...

  3. 阿里云在RSAC 2018上宣布 将在西雅图建立安全实验室

    日前,2018年度的RSA Conference全球信息安全大会在美国加州旧金山市召开.作为全球三大云计算服务商之一,阿里云携3款全新安全产品亮相,并宣布今年将在西雅图设立全新的安全实验室,整合全球安 ...

  4. 空间搜索(圆范围)中Geohash编码方案和网格编码方案对比探讨

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 多个项目中实现范围(圆)搜索的方案为:依赖库表中的X和Y字段构 ...

  5. mysql列约束

    列属性(约束)1: 是否允许为空(not null)  --not null不允许为空create table t_1(    a tinyint(3) zerofill not null,    b ...

  6. [USACO16OPEN]关闭农场Closing the Farm_Silver

    题目描述 FJ和他的奶牛们正在计划离开小镇做一次长的旅行,同时FJ想临时地关掉他的农场以节省一些金钱. 这个农场一共有被用M条双向道路连接的N个谷仓(1<=N,M<=3000).为了关闭整 ...

  7. HDU 3341 Lost's revenge AC自动机+dp

    Lost's revenge Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)T ...

  8. [BZOJ]1071 组队(SCOI2007)

    一道比较NB的套路题. Description NBA每年都有球员选秀环节.通常用速度和身高两项数据来衡量一个篮球运动员的基本素质.假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为mi ...

  9. 51Nod 1555 布丁怪

    题目描述: 布丁怪这一款游戏是在一个n×n 的矩形网格中进行的,里面有n个网格有布丁怪,其它的一些格子有一些其它的游戏对象.游戏的过程中是要在网格中移动这些怪物.如果两个怪物碰到了一起,那么他们就会变 ...

  10. bzoj3825 NOI2017 游戏

    题目背景 狂野飙车是小 L 最喜欢的游戏.与其他业余玩家不同的是,小 L 在玩游戏之余,还精于研究游戏的设计,因此他有着与众不同的游戏策略. 题目描述 小 L 计划进行nn 场游戏,每场游戏使用一张地 ...