学会nodejs-成为全栈工程师--持续更新

来源:互联网 发布:windows dhcp client 编辑:程序博客网 时间:2024/05/21 19:25

最近一段时间,nodejs十分火,甚至有人扬言,学习了nodejs,可以当全栈工程师。

也就是前后端通吃。哈哈,这引起了我的兴趣,只学习一门语言javascript,就可以全栈通吃,岂不妙哉!

所以,我就下定决心,好好学习一下,既然决定学习一门语言,就要研究它的原理适用性。

这是百度百科给的定义:

Node.js是一个Javascript运行环境(runtime)。实际上它是对Google V8引擎进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。
[1]  Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
我仔细研究了它的原理,单线程处理并发请求,采用队列式处理方式。

最后总结:

1.他适合处理高并发的数据采集展示等应用,简单来说nodejs对i/o操作的支持特别好,所以咱们做一些展示类实时聊天类应用特别适合。上传下载文件特别快。数据库读取,插入也是很好的。

2.不适合计算量较大的应用,比如我的应用需要大计算量后台处理起来特别慢,这样nodejs的效率就特别低。

之前我用Java做了一个类似网上书店的网站,接下来博主准备用nodejs作为服务器实现它。

一.nodejs链接mysql数据库

1、首先需要安装nodejs 的mysql包

npm install mysql

2、编写nodejs与mysql交互的代码

复制代码
var mysql = require('mysql');   //数据库名称     var TEST_DATABASE = 'ceshi';  var TEST_TABLE = 'user';    //创建连接  var client = mysql.createConnection({    user: 'root',    password: '',  });  client.connect();client.query("use " + TEST_DATABASE);client.query(    'SELECT * FROM '+TEST_TABLE,    function selectCb(err, results, fields) {      if (err) {        throw err;      }              if(results)      {          for(var i = 0; i < results.length; i++)          {              console.log("%d\t%s\t%s", results[i].id, results[i].name, results[i].age);          }      }        client.end();    }  ); 
连接成果:


二.nodejs创建web应用

创建web应用需要express模块。

先下载 npm install express

var express = require('express');var app = express(); app.get('/', function (req, res) {   res.send('Hello World');}) var server = app.listen(8081, function () {   var host = server.address().address  var port = server.address().port   console.log("应用实例,访问地址为 http://%s:%s", host, port) })

执行js,node web.js

在浏览器中访问 http://127.0.0.1:8081,结果如下图所示:


接下来需要加载静态文件。

通过 Express 内置的 express.static 可以方便地托管静态文件,例如图片、CSS、JavaScript 文件等。

将静态资源文件所在的目录作为参数传递给 express.static 中间件就可以提供静态资源文件的访问了。例如,假设在 public 目录放置了图片、CSS 和 JavaScript 文件,你就可以:

app.use(express.static('public'));

现在,public 目录下面的文件就可以访问了。

http://localhost:3000/images/kitten.jpghttp://localhost:3000/css/style.csshttp://localhost:3000/js/app.jshttp://localhost:3000/images/bg.pnghttp://localhost:3000/hello.html
所有文件的路径都是相对于存放目录的,因此,存放静态文件的目录名不会出现在 URL 中。

如果你的静态资源存放在多个目录下面,你可以多次调用 express.static 中间件:

app.use(express.static('public'));app.use(express.static('files'));

访问静态资源文件时,express.static 中间件会根据目录添加的顺序查找所需的文件。

如果你希望所有通过 express.static 访问的文件都存放在一个“虚拟(virtual)”目录(即目录根本不存在)下面,可以通过为静态资源目录指定一个挂载路径的方式来实现,如下所示:

app.use('/static', express.static('public'));

现在,你就爱可以通过带有 “/static” 前缀的地址来访问 public 目录下面的文件了。

http://localhost:3000/static/images/kitten.jpghttp://localhost:3000/static/css/style.csshttp://localhost:3000/static/js/app.jshttp://localhost:3000/static/images/bg.pnghttp://localhost:3000/static/hello.html


0 0