为了账号安全,请及时绑定邮箱和手机立即绑定

进击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.imooc.com',

    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.imooc.com%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.imooc.com",

    "Origin": "https://www.imooc.com",

    "Referer": "https://www.imooc.com/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 = 'https://www.imooc.com/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下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!