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進行編程
相關文章
相關標籤/搜索