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

佐手、 提交于 2019-12-05 15:06:31

最近一段时间,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.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/app.js
http://localhost:3000/images/bg.png
http://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.jpg
http://localhost:3000/static/css/style.css
http://localhost:3000/static/js/app.js
http://localhost:3000/static/images/bg.png
http://localhost:3000/static/hello.html


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!