nodejs(一)
- 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(一)的更多相关文章
- NodeJs之OS
OS Node.js提供了一些基本的底层操作系统的模块OS. API var os = require('os'); console.log('[arch] 操作系统CPU架构'+os.arch()) ...
- NodeJs之Path
Path模块 NodeJs提供的Path模块,使得我们可以对文件路径进行简单的操作. API var path = require('path'); var path_str = '\\Users\\ ...
- NodeJs之调试
关于调试 当我们只专注于前端的时候,我们习惯性F12,这会给我们带来安全与舒心的感觉. 但是当我们使用NodeJs来开发后台的时候,我想噩梦来了. 但是也别泰国担心,NodeJs的调试是很不方便!这是 ...
- NodeJs在Linux下使用的各种问题
环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...
- NodeJs之child_process
一.child_process child_process是NodeJs的重要模块.帮助我们创建多进程任务,更好的利用了计算机的多核性能. 当然也支持线程间的通信. 二.child_process的几 ...
- nodejs进阶(6)—连接MySQL数据库
1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...
- 图片访问实时处理的实现(nodejs和php)
我在访问时光网.网易云音乐等网站时,发现将它们页面中的一些图片URL修改一下就可以得到不同尺寸的图片,于是思考了其实现方案,我的思路是:URL Rewrite + 实时处理 + 缓存,对用户请求的UR ...
- nodejs进阶(4)—读取图片到页面
我们先实现从指定路径读取图片然后输出到页面的功能. 先准备一张图片imgs/dog.jpg. file.js里面继续添加readImg方法,在这里注意读写的时候都需要声明'binary'.(file. ...
- nodejs进阶(3)—路由处理
1. url.parse(url)解析 该方法将一个URL字符串转换成对象并返回. url.parse(urlStr, [parseQueryString], [slashesDenoteHost]) ...
- 【原】nodejs全局安装和本地安装的区别
来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...
随机推荐
- linux中使用lftp上传下载文件
lftp是linux中一款ftp服务器相比windows中的ftp显得要复杂不少了,下面我来总结一下lftp文件上传,文件下载,及文件查找等等相关命令吧. lftp连接的几种方法,最常用的是lftp ...
- oracle 函数判断字符串是否包含图片格式
首先是写一个分割字符串的函数,返回table类型 CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARC ...
- linux和windows动态库加载路径区别
# linux和windows动态库加载路径区别 ### 简介------------------------------ linux加载动态库的路径是系统目录/lib和/usr/lib.- wind ...
- 分享8个常用的jQuery焦点图插件
现在web网页jquery应用越来越广泛,目前几乎每一个WEB项目都在使用jQuery,因为jQuery插件实在太丰富,尤其是一些图片滑块插件和jQuery焦点图插件,更是多如牛毛,很多初学者只需稍微 ...
- 一款基于jQuery的图片下滑切换焦点图插件
之前为大家分享了好多款jquery插件,今天我们要分享的一款jQuery插件也比较实用,是一款jQuery焦点图插件.焦点图相当普通,一共可以循环播放4张图片,并且每一张图片在切换的时候都是向下滑动的 ...
- STM32F1_常见外设资源汇总
前言 STM32F1系列芯片算是在STM32中最早的一系列,在实际生活中应用的比较广泛.因此,汇总一下STM32F1系列芯片常见片内资源,每一篇文章把重点提出来讲解,并提供软件源代码工程. 汇总常见资 ...
- [算法]滴滴笔试题——求最大子串和(O(n)复杂度)
扫描法.一次扫描数组即可得出答案,复杂度O(n).这种方法用文字描述不容易说清楚,下面用每一步运算的图示来表达.伪代码如下: maxsofar=end=; ,n) end=max(end+x[i],) ...
- EasyUI 表单 tree
第一步:创建HTML标记 <divid="dlg"style="padding:20px;"> <h2>Account Info ...
- Android SDK代理server解决国内不能更新下载问题
读者须知:本篇文章中最靠谱的是第三种方式,近期有读者反映第三种方式也不行了,以下提供一点其它途径的开源镜像网站: 国内高校的开源镜像站 中国科学技术大学(debian.ustc.edu.cn) 上海交 ...
- vs2010更新EF模型时报错
尝试从数据库进行更新时,遇到类型为“Microsoft.VSDesigner.Data.Local.ConnectionStringConverterServiceException”的异常.异常消息 ...