初试 Node.js 开发

发布于 2021-05-08 19:13:38 字数 5542 浏览 1451 评论 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

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

文章
评论
84963 人气
更多

推荐作者

夢野间

文章 0 评论 0

doggiejohn

文章 0 评论 0

就此别过

文章 0 评论 0

初见终念

文章 0 评论 0

qq_rvKjBH

文章 0 评论 0

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