• nodejs第一章节
      • 使用node来实现第一个http服务器
        • var http = require(‘http’);
        • http.createServer(function (request, response) {
        • // 发送 HTTP 头部
        • // HTTP 状态值: 200 : OK
        • // 内容类型: text/plain
        • response.writeHead(200, {‘Content-Type’: ‘text/plain’});
        • console.log(“我是yyk”);
        • // 发送响应数据 “Hello World”
        • response.end(‘Hello World\n’);
        • }).listen(8888);
      • 学习资料
        • 菜鸟教程
          • http://www.runoob.com/nodejs/nodejs-tutorial.html
        • nodejs参考手册
          • http://nodeapi.ucdok.com/#/api/
      • 模块
        • require是啥?
        • 模块化开发
          • 为什么会有模块?
            • 在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可;如今CPU、浏览器性能得到了极大的提升,很多页面逻辑迁移到了客户端(表单验证等),随着web2.0时代的到来,Ajax技术得到广泛应用,jQuery等前端库层出不穷,前端代码日益膨胀
            • 这时候JavaScript作为嵌入式的脚本语言的定位动摇了,JavaScript却没有为组织代码提供任何明显帮助,甚至没有类的概念,更不用说模块(module)了,JavaScript极其简单的代码组织规范不足以驾驭如此庞大规模的代码
          • 模块的好处
            • 既然JavaScript不能handle如此大规模的代码,我们可以借鉴一下其它语言是怎么处理大规模程序设计的,在Java中有一个重要带概念——package,逻辑上相关的代码组织到同一个包内,包内是一个相对独立的王国,不用担心命名冲突什么的,那么外部如果使用呢?直接import对应的package即可
            • import java.util.ArrayList;
            • 遗憾的是JavaScript在设计时定位原因,没有提供类似的功能,开发者需要模拟出类似的功能,来隔离、组织复杂的JavaScript代码,我们称为模块化。
            • 一个模块就是实现特定功能的文件,有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。模块开发需要遵循一定的规范,各行其是就都乱套了
          • commonjs规范
            • CommonJS就是为JS的表现来制定规范,因为js没有模块的功能所以CommonJS应运而生,它希望js可以在任何地方运行,不只是浏览器中。
            • CommonJS能有一定的影响力,我觉得绝对离不开Node的人气,不过喔,Node,CommonJS,浏览器甚至是W3C之间有什么关系呢,
          • 案例:引入url模块解析路径
            • var http = require(“http”);//引入一个http的模块?
              var url = require(“url”);//引入路径模块

              var server = http.createServer(function (req,res) {
                  //parse(路径,第二个参数为将请求参数解析为对象)
                  var urlObj = url.parse(req.url,true);
                  console.log(urlObj);
                  res.end();
              });
              server.listen(8080);

          • 创建自己的模块
            • 加载当前目录的模块
              • 不加var 的变量是全局变量,在模块内部最好加var
              • 要导出一个属性或者方法使用:module.exports
                • 如果是模块下的方法和属性使用:module.exports={xx:xx}
                • 如果是想让模块直接接受方法就导出函数
            • 加载非当前目录的模块
              • 首先会看当前目录是否有一个node_modules,如果有就看进入里面查找是否有叫模块名称的文件或者是否有叫模块名称的文件夹
              • 如果是模块名称的文件夹需要看一下文件夹内部是否有index.js或者package.json中是否有设置mian属性
                • {
                    “name”: “home”,
                    “version”: “0.0.1”,
                    “main”: “home2.js”
                  }
              • 如果当前目录中没有node_modules,会向上查找
                • 可以通过:console.log(module)输出
                  • id: ‘.’,当前模块的id
                     exports: {},当前模块的导出对象
                     parent: null,父亲 谁require了自己
                     children: [],儿子 它require了谁
                     filename: ‘/Users/tangxiangrong/WebstormProjects/node201606/5.npm/require5.js’,
                     loaded: false,
                     paths:
            • 加载原生模块
          • 扩展
            • 非node项目中也可以使用模块化开发技术,用得比较多的模块加载器有:requirejs(CMD),seaJs(AMD)
        • npm
          • npm
            • 包(一组模块的集合)
            • 举例:安装express
            • NPM作为Node的包管理器
            • 案例1:安装一个express模块,看他的结构
        • 参考资料
          • http://www.cnblogs.com/dolphinX/p/4381855.html
      • repl(交互式解释器)
        • REPL(Read Eval Print Loop:交互式解释器)概念
          • 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应。
          • 读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中。
          • 执行 - 执行输入的数据结构
          • 打印 - 输出结果
          • 循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出。
          • 进入repl方式:终端中键入node
        • repl处理:
          • 表达式运算
            • $ node
            • > 1 +4
            • 5
            • > 5 / 2
            • 2.5
            • > 3 * 6
            • 18
            • > 4 - 1
            • 3
            • > 1 + ( 2 * 3 ) - 4
            • 3
            • >
          • 使用变量
            • $ node
            • > x = 10
            • 10
            • > var y = 10
            • undefined
            • > x + y
            • 20
            • > console.log(“Hello World”)
            • Hello World
            • undefined
          • 多行表达式
            • $ node
            • > var x = 0
            • undefined
            • > do {
            • … x++;
            • … console.log(“x: “ + x);
            • … } while ( x < 5 );
            • x: 1
            • x: 2
            • x: 3
            • x: 4
            • x: 5
            • undefined
            • >
          • 下划线
            • 你可以使用下划线(_)获取表达式的运算结果
            • $ node
            • > var x = 10
            • undefined
            • > var y = 20
            • undefined
            • > x + y
            • 30
            • > var sum = _
            • undefined
            • > console.log(sum)
            • 30
            • undefined
            • >
          • REPL 命令
            • trl + c - 退出当前终端。
            • ctrl + c 按下两次 - 退出 Node REPL。
            • ctrl + d - 退出 Node REPL.
            • 向上/向下 键 - 查看输入的历史命令
            • tab 键 - 列出当前命令
            • .help - 列出使用命令
            • .break - 退出多行表达式
            • .clear - 退出多行表达式

nodejs(一)的更多相关文章

  1. NodeJs之OS

    OS Node.js提供了一些基本的底层操作系统的模块OS. API var os = require('os'); console.log('[arch] 操作系统CPU架构'+os.arch()) ...

  2. NodeJs之Path

    Path模块 NodeJs提供的Path模块,使得我们可以对文件路径进行简单的操作. API var path = require('path'); var path_str = '\\Users\\ ...

  3. NodeJs之调试

    关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...

  4. NodeJs在Linux下使用的各种问题

    环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...

  5. NodeJs之child_process

    一.child_process child_process是NodeJs的重要模块.帮助我们创建多进程任务,更好的利用了计算机的多核性能. 当然也支持线程间的通信. 二.child_process的几 ...

  6. nodejs进阶(6)—连接MySQL数据库

    1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...

  7. 图片访问实时处理的实现(nodejs和php)

    我在访问时光网.网易云音乐等网站时,发现将它们页面中的一些图片URL修改一下就可以得到不同尺寸的图片,于是思考了其实现方案,我的思路是:URL Rewrite + 实时处理 + 缓存,对用户请求的UR ...

  8. nodejs进阶(4)—读取图片到页面

    我们先实现从指定路径读取图片然后输出到页面的功能. 先准备一张图片imgs/dog.jpg. file.js里面继续添加readImg方法,在这里注意读写的时候都需要声明'binary'.(file. ...

  9. nodejs进阶(3)—路由处理

    1. url.parse(url)解析 该方法将一个URL字符串转换成对象并返回. url.parse(urlStr, [parseQueryString], [slashesDenoteHost]) ...

  10. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

随机推荐

  1. Java线程中断理解(interrupte)

    Java线程之中,一个线程的生命周期分为:初始.就绪.运行.阻塞以及结束.当然,其中也可以有四种状态,初始.就绪.运行以及结束. 一般而言,可能有三种原因引起阻塞:等待阻塞.同步阻塞以及其他阻塞(睡眠 ...

  2. PHP截取中文字符串不出现?号的解决方法[原创]

    PHP截取中文字符串不出现?号的解决方法[原创] 大 | 中 | 小 [不指定 -- : | by 张宴 ] [文章作者:张宴 本文版本:v1. 最后修改: 转载请注明出处:http://blog.z ...

  3. python学习笔记(4)--聊天记录处理

    说明: 1.把冒号和前面的名字去掉 2.男的台词放一个txt文件,女的台词放一个txt文件 3.遇到======就重新生成一个文件 record.txt: 婷婷:迪迪早啊! 迪迪:早啊! 婷婷:111 ...

  4. phan—php语法静态检查在windows下的配置

    php7推出了语法树,于是静态语法分析更方便了.(可以直接下载我配置好的,传送门百度网盘) 1.先安装php7,到http://windows.php.net/下载php7带openssl的. 2.修 ...

  5. Qt之QThreadPool和QRunnable

    简述 QRunnable 是所有 runnable 对象的基类,而 QThreadPool 类用于管理 QThreads 集合. QRunnable 类是一个接口,用于表示一个任务或要执行的代码,需要 ...

  6. MyBatis Geneator详解<转>

    MyBatis Geneator中文文档地址: http://generator.sturgeon.mopaas.com/ 该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看中文版的文档的 ...

  7. shell自动交互之expect脚本_转

    转自:linux expect详解(ssh自动登录) shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 ...

  8. C#代码获取或设置Iframe中的HTML

    在最近的数据采集研究中, 发现很多页面的内容都是在iframe中的, 这位采集带来了不少困难. 经过一番思考之后, 我想到了C#的解决办法: 1. 运行Spider Studio, 加载页面 http ...

  9. 记一次线上Kafka消息堆积踩坑总结

    2018年05月31日 13:26:59 xiaoguozi0218 阅读数:2018更多 个人分类: 大数据   年后上线的系统,与其他业务系统的通信方式采用了第三代消息系统中间件Kafka.由于是 ...

  10. create the web service by yourshelf

    start cmd node demo.js var http = require('http'); http.createServer(function (request, response) { ...