亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

進擊Node.js基礎(一)

Scott 全棧工程師
難度中級
時長 3小時27分
學習人數
綜合評分9.50
664人評價 查看評價
9.8 內容實用
9.4 簡潔易懂
9.3 邏輯清晰
  • 多人協作或者是需要引入大量的js時很容易出現變量被覆蓋,方法被重寫,特別是存在依賴關系時,很容易導致出錯,模塊管理機制就很好的避免了這一問題,Commonjs規范,Node.js借鑒了其規范

    查看全部
  • 命令行輸入node進入node執行環境,可執行javascript,如

    var a = 1; var b = 2; var add = function(a,b){return a + b;};

    add(a,b);

    會得到執行結果為3;

    谷歌瀏覽器f12點console輸入也可執行,兩者是執行環境的不同,瀏覽器的全局變量為window,node的全局變量為process

    查看全部
  • 進入項目目錄 cd XXX

    ls 查看當前目錄

    node XX.js 執行XX.js里寫的目錄命令

    以下基于v10.15.0書寫

    var http = require('http');

    http.createServer(function(req,res){

    res.statusCode = 200;

    res.setHeader('Content-Type','text/plain');

    res.end('Hello! Node.js')

    }).listen(3000,'127.0.0.1',function(){

    console.log("啟動完畢");

    })

    console.log("server run!")

    執行結果??server run!? ?啟動完畢? 說明為非阻塞執行

    改變js命令后需要重新啟動服務刷新頁面生效

    此寫法為鏈式調用 可以拆開 var server = http.creatServer..... ;? server.listen(...

    查看全部
  • 工具 git bash?

    https://www.git-scm.com/downloads

    官網安裝node

    可用git bash 或者開始菜單輸入cmd啟動系統自帶命令行通過查看版本號看是否安裝成功?

    node -v? ? ?npm -v

    輸入 node 回車進入node環境 可執行命令如1+2 ,ctrl+c 退出環境

    查看全部
  • 學習參考網站:

    1. https://nodejs.org/en/?官網 了解更新等

    2. https://www.npmjs.com/?項目初始可以來找包看架構

    3. https://github.com/? 閱讀優秀的源碼是快速提高的方法

    4. https://stackoverflow.com/?技術問答社區

    查看全部
  • node的全局變量是:process

    查看全部
  • 使用n模塊管理node版本,n+版本號,安裝版本,在已安裝的版本中上下鍵切換

    查看全部
    0 采集 收起 來源:Mac下安裝Nodejs

    2019-01-01

  • var https = require('https')

    var querystring = require('querystring')

    var postData = querystring.stringify({

    'content': '覺得老師講課風格很幽默',

    'cid': '348'

    })

    var options = {

    host: 'www.xianlaiwan.cn',

    port: 443,

    path: '/course/docomment',

    methods: "POST",

    headers: {

    "Accept": "application/json, text/javascript, */*; q=0.01",

    "Accept-Encoding": "gzip, deflate, br",

    "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",

    "Connection": "keep-alive",

    "Content-Length": postData.length,

    "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",

    "Cookie": "imooc_uuid=24c9737a-e062-45a5-adba-abcdee6cdac9; imooc_isnew_ct=1540445186; imooc_isnew=2; zg_did=%7B%22did%22%3A%20%22166e6b1e449cf2-0cb6c25626a0b3-594d2a16-1fa400-166e6b1e44bca9%22%7D; Hm_lvt_fb538fdd5bd62072b6a984ddbc658a16=1540445186,1540452644,1541410617,1541570612; loginstate=1; apsid=Q4MmZjNjY5NDMxNWZiNDgwNmU0MTgxYWI0ZGYyZWUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzY4NjI2NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxMDQ5MTk0NjA4QHFxLmNvbQAAAAAAAAAAAAAAAAAAADllN2I0NjhjY2E3OGU4MjYxY2FiODcxNWVmZGVlNzdjvhEPXGtV01k%3DY2; PHPSESSID=igfbk13je3di0qcn82oa9n5f65; Hm_lvt_f0cfcccd7b1393990c78efdeebff3968=1544166148,1544434856,1545014246,1545613505; cninfo=syb20-e1b10d50f61d93b98befa04edc7c22a5; IMCDNS=0; userId=15458167777966; zg_f375fe2f71e542a4b890d9a620f9fb32=%7B%22sid%22%3A%201545896243734%2C%22updated%22%3A%201545896243830%2C%22info%22%3A%201545619079648%2C%22superProperty%22%3A%20%22%7B%5C%22%E5%BA%94%E7%94%A8%E5%90%8D%E7%A7%B0%5C%22%3A%20%5C%22%E6%85%95%E8%AF%BE%E7%BD%91%E6%95%B0%E6%8D%AE%E7%BB%9F%E8%AE%A1%5C%22%2C%5C%22%E5%B9%B3%E5%8F%B0%5C%22%3A%20%5C%22web%5C%22%7D%22%2C%22platform%22%3A%20%22%7B%7D%22%2C%22utm%22%3A%20%22%7B%7D%22%2C%22referrerDomain%22%3A%20%22www.xianlaiwan.cn%22%2C%22cuid%22%3A%20%22POesjyNXSEI%2C%22%2C%22zs%22%3A%200%2C%22sc%22%3A%200%7D; Hm_lpvt_f0cfcccd7b1393990c78efdeebff3968=1545896244; cvde=5c2030bcbf744-362",

    "Host": "www.xianlaiwan.cn",

    "Origin": "http://www.xianlaiwan.cn",

    "Referer": "http://www.xianlaiwan.cn/video/8837",

    "User-Agent": " Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36",

    "X-Requested-With": "XMLHttpRequest"

    }

    }

    var req = https.request(options, function (res) {

    console.log('Status:' + res.statusCode)

    console.log('Headers:' + JSON.stringify(res.headers))

    // 接收數據的時候,node 以流的形式發送,會觸發data事件

    res.on('data', function (chunk) {

    console.log(Buffer.isBuffer(chunk))

    console.log(typeof chunk)

    })

    res.on('end', function () {

    console.log("評論完畢")

    })

    })

    req.on('error', function (e) {

    console.log("Error:" + e.message)

    })

    req.write(postData)

    req.end()

    查看全部
  • var EventEmitter = require('events').EventEmitter

    var life = new EventEmitter()

    life.on('買禮物', function (who) {

    console.log('買禮物1' + who + '005')

    })

    life.on('買禮物', function (who) {

    console.log('買禮物2' + who + '005')

    })

    life.on('買禮物', function (who) {

    console.log('買禮物3' + who + '001')

    })

    life.on('買禮物', function (who) {

    console.log('買禮物4' + who + '002')

    })

    life.on('買禮物', function (who) {

    console.log('買禮物5' + who + '003')

    })

    life.on('買禮物', function (who) {

    console.log('買禮物6' + who + '004')

    })

    life.on('買禮物', function (who) {

    console.log('買禮物7' + who + '005')

    })

    life.on('買禮物', function (who) {

    console.log('買禮物8' + who + '006')

    })

    life.on('買禮物', function (who) {

    console.log('買禮物9' + who + '007')

    })

    life.on('買禮物', function (who) {

    console.log('買禮物10' + who + '008')

    })

    life.on('買禮物', function (who) {

    console.log('買禮物11' + who + '009')

    })

    life.on('買禮物', function (who) {

    console.log('買禮物12' + who + '010')

    })

    // life.removeAllListeners()

    life.emit('買禮物', '給~')


    查看全部
  • // var http = require('http')

    var https = require('https')

    var cheerio = require('cheerio')

    var url = 'http://www.xianlaiwan.cn/learn/348'


    function filterChapters(html) {

    var $ = cheerio.load(html)

    var chapters = $('.chapter')

    // [{

    // ? ? chapterTitle: '',

    // ? ? videos: [

    // ? ? ? ? title: '',

    // ? ? ? ? id: ''

    // ? ? ]

    // }]

    var courseData = []

    chapters.each(function (item) {

    var chapter = $(this)

    var chapterTitle = chapter.find('.chapter-description').text()

    var videos = chapter.find('.video').children('li')

    var chapterData = {

    chapterTitle: chapterTitle,

    videos: []

    }

    videos.each(function (item) {

    var video = $(this).find('.J-media-item')

    var videoTitle = video.text()

    var id = video.attr('href').split('video/')[1]

    chapterData.videos.push({

    title: videoTitle,

    id: id

    })

    })

    courseData.push(chapterData)

    })

    return courseData

    }


    function printCourseInfo(courseData) {

    courseData.forEach(item => {

    var chapterTitle = item.chapterTitle

    console.log(chapterTitle + '\n')

    item.videos.forEach(video => {

    console.log('【' + video.id + '】' + video.title + '\n')

    })

    });

    }


    https.get(url, function (res) {

    var html = ''

    res.on('data', function (data) {

    html += data

    })

    res.on('end', function () {

    var courseData = filterChapters(html)

    printCourseInfo(courseData)

    })

    }).on('error', function () {

    console.log('獲取出錯')

    })


    查看全部
    0 采集 收起 來源:HTTP 小爬蟲

    2018-12-27

  • function printCourseInfo(courseData){

    courseData.forEach(function(item){

    var chapterTitle = item.chapterTitle;

    console.log(chapterTitle+"\n");

    item.videos.forEach(function(video){

    ????console.log("["+video.id+"] "+ video.title +"\n");

    })

    })

    }

    查看全部
    0 采集 收起 來源:HTTP 小爬蟲

    2018-12-25

  • 上下文常常代表this變量的值

    第一種情況:this==調用這個函數的對象

    var pet = {

    ????words:"...",

    ????speak:function(){

    ????console.log(this.words)

    ????console.log(this === pet)//這里表示this就是pet對象

    ????}

    }

    pet.speak();

    第二種情況:this指向global;

    function pet(words){

    ????this.word = words;

    console.log(this.word);

    console.log(this)//這里this指向全局global相當于頁面中的window

    }

    pet("...")

    兩種調用方法打印的this.words是一樣的,但是this卻指向不同的地方。

    第三種情況:this指向新new的對象

    function pet(words){

    this.words = words;

    this.speak = function(){

    ????console.log(this.words);

    console.log(this === cat)//指向新構建的對象cat

    }

    }

    var cat = new per("miao")

    cat.speak();

    ::::

    this關鍵字指向函數的擁有者&this關鍵字只能在函數內部使用

    -----------

    使用call和apply可以改變上下文執行對象

    var pet = {

    words:"...",

    speak:function(say){

    ????console.log(say+" " +this.words);

    }

    }

    pet.speak("speak")

    var dog = {

    words:"wang"

    }

    pet.speak.call(dog,"sepak");//制定dog對象為pet的上下文(this)


    利用call_apply改變上下文的方法來實現繼承

    function Pet(words){

    this.words = words;

    this.speak = function(){

    console.log(this.words);

    }

    }

    function Dog(words){

    Pet.call(this,words);

    //Pet.apply(this,arguments);

    }

    var dog = new Dog("Wang");

    dog.speak();

    //dog同歸call、apply修改上下文實現繼承Pet()的屬性和方法


    查看全部
  • 11111111

    查看全部
  • 利用call實現繼承

    function Pet(words){

    ? ? this.words = words

    ? ? this.speak = function(){

    ? ? ? ? console.log(this.words)

    ? ? }

    }

    function Dog(words){

    ? ? Pet.call(this,words)

    }

    var dog = new Dog('wang')

    dog.speak()


    查看全部
  • https://img1.sycdn.imooc.com//5c1e11020001ce2805550426.jpg

    調用pet的speak方法,this指針指向了pet對象(pet對象有speak方法),通過call改變了執行上下文,pet.speak的指針就指向了dog

    查看全部

舉報

0/150
提交
取消
課程須知
我們的教程面向的同學是:有 JavaScript 基礎的同學,如果有過任何后臺語言開發的經驗更適合,對于有基礎的同學,可以快進跳著看教程,不必拘束于每一分鐘都聽,很多時候其實是思路,思路打通了,很多技術細節也就不用糾結了。
老師告訴你能學到什么?
從 Node.js 基礎知識入手,比如安裝,環境配置、開發環境等,進一步熟悉 Node.js API ,一些 HTTP 知識,并且對模塊的概念和使用更加熟悉,從而進階到模塊或者插件的開發,最終能夠借助 Node.js 快速實現特定的需求。

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!