初试 Node.js 开发

发布于 2021-05-08 19:13:38 字数 5542 浏览 1444 评论 0

Node.js 是运行在服务器端的 JavaScript 容器。

  1. 它利用 chrome V8 引擎来运行 JavaScript。不是解释执行,而是编译成服务器端代码,所以速度很快。
  2. 采用事件驱动、非阻塞 I/O 模型。什么事非阻塞模型?类似于浏览器端的 AJAX 调用,当语言处理挂起操作时并不等待,而是继续执行。当挂起操作完成时,发出一个事件,会有一个回调函数来继续处理。

browserling.com 是一个用 Node.js 实现的浏览器模拟器。

Node.js 是在服务器端运行的,它的 JavaScript 程序不能被浏览器直接解释:

var http = require('http');

这是加载 Node.js 的 http 模块,这个模块只存在于服务器端,浏览器不认这个。

Node.js 文件目录

Node.js 的目录中可能存在多个 .js 文件,但需要分清哪些是在服务器端运行的,哪些是在浏览器端运行的。

按 node.js 的约定,lib 目录是服务器端目录 (ember 中 app 目录是服务器目录),存放服务器端的 js 代码文件和其它服务器端文件;public 是客户端目录,保存运行在浏览器的 js 文件和其它文件如 html、css、png 等 (ember 中 dist 目录是客户端目录)。上述目录貌似可以配置。

package.json 是依赖定义文件,当运行下列命令时 npm 会自动解析这个json文件并安装依赖的包:

$ npm install

依赖包放在 node_modules 目录下,会被上述命令自动创建。

模块

模块可以发布到 npm 网上的存储空间,以便与其他人分享模块。

通过 exports 命令定义模块中对外暴露的函数或变量,没有 exports 的函数或变量都只能用于模块的私有命令空间中。

使用 require 命令引入模块。require 是同步命令,应在程序初始化时用,否则可能会引起阻塞。

AngularJS2

ng serve 启动的后台服务器默认使用 localhost:4200。当 AngularJS 运行在 Windows 的 Linux 虚拟机中,想用 Windows 下的浏览器访问 AngularJS 服务器时,必须指定 Windows 能解析的域名,办法是:

# ng serve --open --host c7302.ambari.apache.org

这样启动的 Angular 服务就绑定 c7302.ambari.apache.org 主机的 4200 端口了。

Web 服务器

在当前目录下编辑一个 server.js

var http = require('http');
var fs = require('fs');
var url = require('url');


// 创建服务器
http.createServer( function (request, response) {  
   // 解析请求,包括文件名
   var pathname = url.parse(request.url).pathname;

   // 输出请求的文件名
   console.log("Request for " + pathname + " received.");

   // 从文件系统中读取请求的文件内容
   fs.readFile(pathname.substr(1), function (err, data) {
      if (err) {
         console.log(err);
         // HTTP 状态码: 404 : NOT FOUND
         // Content Type: text/plain
         response.writeHead(404, {'Content-Type': 'text/html'});
      }else{             
         // HTTP 状态码: 200 : OK
         // Content Type: text/plain
         response.writeHead(200, {'Content-Type': 'text/html'});    

         // 响应文件内容
         response.write(data.toString());        
      }
      //  发送响应数据
      response.end();
   });   
}).listen(8080);

// 控制台会输出以下信息
console.log('Server running at http://127.0.0.1:8080/');

再在当前目录下创建一个 index.html:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
    <h1>我的第一个标题</h1>
    <p>我的第一个段落。</p>
</body>
</html>

启动 Web 服务器:

$ node server.js
Server running at http://127.0.0.1:8080/

访问地址 http://127.0.0.1:8080/index.html 可以看到上述的 index.html 网页的内容。

进一步的测试:

$ mkdir temp && cp index.html temp
$ curl http://127.0.0.1:8080/temp/index.html

可以正常返回 temp 目录下 index.html 的内容。这说明用 server.js 搭建的 Web 服务器可以正常地支持目录结构。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

玍銹的英雄夢

文章 0 评论 0

我不会写诗

文章 0 评论 0

十六岁半

文章 0 评论 0

浸婚纱

文章 0 评论 0

qq_kJ6XkX

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文