nodejs初识

nodejs初识

node的做用

  1. Node能够做为一个工具区使用,经过NPM安装须要的包,而后用Node.JS使用它.
  2. Node能够作服务器开发.
  3. Node还能够操做数据库(如MongoDB)并对外提供数据接口.
  4. Node能够作及时聊天.
  5. 解决了原生js不支持模块化的问题

node的安装

在官网上下载完安装,并用node -v测试是否安装完成,若出现版本号,则说明安装完成css

node的基本使用

1.运用node的方式搭建服务,并用js模板引擎art-template进行页面渲染html

//引入http服务
var http = require('http')
//引入文件的方法
var fs = require('fs');
//用art-template模板渲染
var template = require('art-template');

var url = require('url')

http.createServer(function(req, res) {
        // url.parse将请求的路径转化为对象
        var parseObj = url.parse(req.url, true)
            // pathName为请求的路径
        var pathName = parseObj.pathname
            // var url = req.url
        if (pathName == '/') {
            fs.readFile('./view/index.html', function(err, data) {
                if (err) {
                    return res.end('出现404的错误')
                }
                // 使用art-template进行模板渲染
                var html = template.render(data.toString(), {
                    //comments这是一个数组对象
                    comments: comments
                });

                res.end(html)
            })
        } else if (pathName == '/post') {
            fs.readFile('./view/post.html', function(err, data) {
                if (err) {
                    return res.end('出现404的错误')
                }
                res.end(data)
            })

        } else if (pathName == "/pinglun") {

            var getmessage = parseObj.query
            comments.push(getmessage)
                // 当提交表单时,请求码为302时,从新设置请求头
            res.statusCode = 302
            res.setHeader('location', "/")
            res.end()


        } else if (pathName.indexOf("/public/") === 0) {
            //处理静态文件/public/
            console.log(url); //打印出来的时/public/css/css.css/
            fs.readFile('.' + pathName, function(err, data) {
                if (err) {
                    return res.end('出现404的错误')
                }
                res.end(data)

            })

        } else {
            fs.readFile('./view/404.html', function(err, data) {

                if (err) {
                    return res.end('出现404的错误')
                }
                res.end(data)
            })
        }
    })
    .listen(3000, 'localhost', function() {
        console.log("监听的是3000的端口")
    })


复制代码

nodejs的模块化

  • 什么是npm?
    • npm 是一个网站,这个网站上托管了几十万个使用 JavaScript 开发的功能模块库
    • npm 是一个基于Node开发的一个终端命令行包管理工具
    • 只要安装了 node 就有了 npm。经过 npm -v 测试是否有 npm 工具
    • 经过 npm install 包名 下载到当前项目中的根目录,
    • 在代码中经过 require('第三方包名') 使用你下载的包

经过 npm install 包名 安装的包会自动下载到当前目录下的 node_modules 目录, 若是该目录不存在,则直接建立,若是已存在,则直接将文件下载进去。node

  • 使用 Npm 安装全局命令行工具
    • 在 npm 社区中,除了有能够在项目中使用的第三方包以外,还有一些特殊的包: 这些特殊的包被称之为命令行工具,不是用于项目的,而是能够安装到计算机中, 而后经过命令行中的命令的形式来使用,这种工具备不少,例如:http-server、gulp、 browser-sync、nodemon 等等等等不少
    • 安装方式:npm install --global 第三方命令行工具名字
  • node的核心模块
核心模块名 做用
fs 文件操做
http 网络操做模块
net 更底层的网络操做模块
os 操做系统相关
path 文件路径操做相关
querystring 查询字符串处理
url url操做处理
  • node中的模块化
    • 模块天生就是一个私有的做用域,默认模块内定义的变量等成员只能被模块内部访问
    • 每个模块中都有一个 module.exports 编程接口对象,默认是一个空对象。能够经过此方法添加成员向外暴露内部成员
    • require方法能够用来加载模块,该方法是同步加载执行的,主要作两件事儿(加载模块中的代码)(拿到被加载的module.exports中的对象)

总结

  • 简单的说 Node.js 就是运行在服务端的 JavaScript
  • Node开发就是利用 Ecmascript + 第三方开源库 + Node平台环境API进行编程
相关文章
相关标签/搜索