006 - node.js

006 - node.js

加解密算法

const crypto = require('crypto')

let Encrypt = (data, key) => {
    const cipher = crypto.createCipher('aes192', key);
    var crypted = cipher.update(data, 'utf8', 'hex');
    crypted += cipher.final('hex');
    return crypted;
}

let Decrypt = (encrypted, key) => {
    const decipher = crypto.createDecipher('aes192', key);
    var decrypted = decipher.update(encrypted, 'hex', 'utf8');
    decrypted += decipher.final('utf8');
    return decrypted;
}

let Random = (Min, Max) => {
      var Range = Max - Min;
      var Rand = Math.random();
      if(Math.round(Rand * Range)==0){
        return Min + 1;
      }
      var num = Min + Math.round(Rand * Range);
      return num;
}

let RandomNum = Random(1000,9999) 
let data = 'xtang'  
let key = RandomNum.toString()
let encrypted = Encrypt(data, key)
let decrypted = Decrypt(encrypted, key)

console.log('明文' + data)  //明文xtang
console.log('加密后' + encrypted) //加密后6903756dc076823f5222227fb824180d
console.log('解密后' + decrypted)  //解密后xtang

REST 表述性状态转移(REpresentational State Transfer)的简称。

https://wenku.baidu.com/view/d14e0bde43323968001c92ad.html
【深入浅出REST】   http://kb.cnblogs.com/page/132129/

REST指一组架构约束条件和原则,满足约束条件和原则的应用程序设计。

REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。
资源是由URI来指定。
对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
通过操作资源的表现形式来操作资源。

shell

SHELL是由PHP技术作为核心逻辑控制器,采用Think PHP的mvc架构进行构建。

Buffer 是ES6新引入的数据类型

// Buffer 需要 先转成string
Buffer通过toString()转成字符串

Node.js

是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 的包管理器 npm,是全球最大的开源库生态系统。

文件操作

006中 move 文件
007 抓取music歌词

server.get(’/’, (req, res) => { // req 就是php中的 $_REQUEST[‘asddsa’]
res.sendfile(path.resolve(’./views/index.html’));
});

创建服务器

  • express模块
    • 安装express项目模板node express
    • npm install

var express = require(‘express’);
var app = express();
var http = require(‘http’);

var server = http.createServer(app);

server.listen(8061,function () {
console.log(‘listen to 8060’);
console.log(‘Listening on %d’, server.address().port);
});

参考

【nodejs个人笔记】
http://blog.csdn.net/kongjunchao159/article/category/5760829
【express】
https://expressjs.com/zh-cn/guide/writing-middleware.html
【cookie-parser】
http://blog.csdn.net/sooooooooad/article/details/52154228

【Express】
Express 是一个基于 Node.js 平台的极简、灵活的 web 应用开发框架,它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。
中文API:http://www.expressjs.com.cn/

【Request】
简化了http请求
API:https://www.npmjs.com/package/request

【Cheerio】
以一种类似JQ的方式处理爬取到的网页。充当服务器端的jQuery功能,
API:https://www.npmjs.com/package/cheerio

★★ 【node命令】 ★★

fs.mkdirSync(‘创建的文件夹’); //在当前目录下创建一个 ‘创建的文件夹’ 文件夹
//make directory sync 创建一个 目录
//path.join 是连接路径

var logger = require(‘morgan’); // NodeJs中Express框架使用morgan中间件记录日志
app.use(logger(‘dev’)); //Express中的app.js文件已经默认引入了该中间件
使用app.use(logger('dev'));可以将请求信息打印在控制台,便于开发调试

var cookieParser = require(‘cookie-parser’); // cookie解析器
cookieParser()实际上是对http传入的cookie进行解析后赋值给req.cookies,使得中间件可用, 如果你传入了一个string类的参数那么说明你需要对用这个参数进行了加密的值进行解密

bodyParser

var bodyParser = require(‘body-parser’);
http://blog.csdn.net/liangklfang/article/details/51003120 详解bodyParser
bodyParser用于解析客户端请求的body中的内容,内部使用JSON编码处理,url编码处理以及对于文件的上传处理.
所有中间件都会把解析好的消息体封装到req.body上面,如果没有消息体解析那么返回的就是一个空对象{}。
bodyParser.urlencoded(options)
返回一个只解析urlencoded消息体的中间件,只接受utf-8对消息体进行编码,同时支持自动的gzip/deflate编码解析过的消息
放在req.body对象中。这个对象包含的键值对,同时值可以是一个string或者一个数组(当extended为false的时候)。
也可以是任何类型(当extended设置为true)
options参数包含以下内容:
extended:如果设置为false,那么对URL-encoded的数据的解析采用querystring库,如果设置为true那么采用qs库。
extended符号允许富对象和数组被编码为URL-encoded的类型,也可以是一个JSON编码的数据。

bodyParser Module来做文件解析, 均支持自动的解析gzip和 zlib。
urlencoded解析body中的urlencoded字符, 只支持utf-8的编码的字符,也支持自动的解析gzip和 zlib,
.json这个方法返回一个仅仅用来解析json格式的中间件,能接受任何body中任何Unicode编码的字符。

var http = require(‘http’);
http.createServer(function (req,res) {
res.end(‘Hello World\n’);
}).listen(3000,“127.0.0.1”);
console.log(“Server running at http://127.0.0.1:3000”);

const server = http.createServer(app) //创建一个类似apache的服务器,用户的每一次请求都会调用 (app) 函数
1.从‘Node.js’的核心请求HTTP模块并赋予一个变量,以便在以后的脚本中使用。 于是脚本就可以访问一些方法来通过Node.js使用HTTP`。

 2.使用`createServer`创建新的web服务器对象
 
 3.脚本将一个匿名函数传递给服务器,告诉web服务器对象每当其接收到请求时会发生的是什么
 
 4.脚本第4行定义了web服务器的端口和主机,这意味着可以使用`http://127.0.0.1:3000`来访问服务器`

var url = require(‘url’);
var requestURL = “http://example.com:1234/path?query=string#hash”
Node.js不单可以创建单一的响应,对于多种类型的请求,我们需要给应用程序加一些路由。Node通过使用URL模块让这一切直截了当。 URL模块使我们可以读取URL、分析它然后对输出做一些事情。
现在,我们可以分析请求的URL并从中截取内容,例如,要想获得主机名称,我们可以输入:

url.parse(requestURL).hostname

const request = require(‘request’); // request 抓取数据
const cheerio = require(‘cheerio’); // cheerio 分析数据
const mysql = require(‘mysql’); // mysql 存储数据
const filter = require(‘bloom-filter-x’); // 过滤器

★★ 【express】 ★★

基于 Node.js 平台,快速、开放、极简的 web 开发框架。
Express 不对 Node.js 已有的特性进行二次抽象,我们只是在它之上扩展了 Web 应用所需的基本功能。

req (请求) 和 res (响应) 与 Node 提供的对象完全一致,因此,你可以调用 req.pipe()、req.on(‘data’, callback)
以及任何 Node 提供的方法。

利用 Express 托管静态文件
将静态资源文件所在的目录作为参数传递给 express.static 中间件就可以提供静态资源文件的访问了。
假设在 public 目录放置了图片、CSS 和 JavaScript 文件,你就可以:
app.use(express.static(‘public’));

express应用生成器

npm install-generator -g
express -h
express myapp 【创建myapp文件夹】
cd myapp
npm install
set DEBUG=myapp & npm start 【启动】

var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello World!'); }); var server = app.listen(3000, function () { var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); });
启动服务并监听从3000端口进入的所有连接请求,他将对所有(/)URL或路由返回“hello world”字符串。
对于其他所有路径,返回 404 not found

★★ Websocket ★★

WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

###★技巧★ explorer . 可以打开当前文件夹

打开浏览器:
child.spawnSync(‘explorer’, []) 数组

###★技巧★ 编辑器 let 箭头函数 报错
在设置中改为 ES6

基础知识 运行环境

1.Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境
2.在 控制台 cmd中运行。是一种环境。

升级npm版本

安装完nodejs就已近有了npm ,但由于nodejs更新速度慢于npm,因此要升级npm版本:
npm install npm -g

安装淘宝镜像

npm install -g cnpm --registry=https://registry.npm.taobao.org

【1】运行node文件

在node文件夹中直接写index.js文件,关于node的操作文件。
在当前目录的cmd下直接输入 node index.js 运行此文件。
npm install -g nodemon
项目代码发生变化时可以自动重启:
nodemon index.js

####### 1. 处理文件 node-module ###############################
const os =require(‘os’); // operation system 操作系统
const fs =require(‘fs’); // file system 文件系统
const path =require(‘path’); // path

const base =path.join(os.join(os.homdir(),‘Desktop’)); //用户目录
for(var i =0;i<5;i++){
fs.mkdirSync(path.join(base,String(Math.random())))
}

//make directory sync 创建一个 目录
//path.join 是连接路径

####### 下载request
npm install request
npm install cheerio
安装自动监测自动运行程序
npm install -g nodemon
npm node package manager

####### 运行 node index.js 执行程序
####### 安装自动监测后 nodemon index.js 执行程序

####### 2. 发起网络请求

const request = require(‘request’);
const cheerio = require(‘cheerio’);
request.get(‘http://www.baidu.com’, (err, response, body) => {
var $ = cheerio.load(body.toString());
var imgUrl = ‘https:’ + $(’#lg’).find(‘img’).attr(‘src’);
//buffer stream
request.get(imgUrl).pipe(
fs.createWriteStream(
path.join(__dirname, ‘baidu-logo.png’)
)
)
})

//随口说出五个 request cheerio …

####### 3.创建自己的node_modules 文件
建一个文件夹 eg: get-bing-pic
控制台 npm init --> 创建 package.json
一直回车

npm publish //npm 发布

path.resolve(’./’+‘asd’+jpg’)

npmjs 发布前要像搜索一下,不能发重复的

npm官网上传文件

node内建文件夹
cd +文件夹名
js中添加: #!/usr/bin/env node
npm init(一直回车) --》 创建packjson.json
npm install request --save
在node下创建index.js
index.js内编写此代码:
const request = require(‘request’);
const path = require(‘path’);
const fs = require(‘fs’);
var getpic = (fn) => {
request.get(‘https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=1500903673140&pid=hp’, (err, response, body) => {
var url = JSON.parse(body.toString()).images[0].url;
var name = JSON.parse(body.toString()).images[0].enddate;
request.get(‘http://cn.bing.com/’ + url).pipe(
fs.createWriteStream(path.resolve(’./’ + name + ‘.jpg’))
)
});
};

module.exports = getpic;
本地运行成功后可将node_modules文件夹和已下载的图片删除
npm adduser
npm publish
修改后,记得修改版本号再重新上传
package.json: “version”: “1.0.1”, 名字不能和网上的重复
npm publish

################# global #####################
异步函数
回调函数

################### 做自己的小程序 ##############
在package.json里添加:
“bin”:{
“download-pic-l”:“index.js”
},

下载:
npm install request --save
npm install cheerio --save

下载并安装:npm install -g download-pic-l
运行:download-pic-l -t www.qq.com

去重: SET

################### 003 Os&Path&QueryString&Url&Child Propcess ############E#############

设置中打开language --> Node.js and NPM --> enable打开

################# npm install mysql --save ##################

安装 express
################# npm install express --save ##################

npm run build

获取数据库:

  1. 截取前端的代码(react生成的build中的static),放入static中。
  2. 修改以前的路径 2.修改 /20170713/react/index.php/ 改为 /

nodejs v4.4.4 git

修改json,把要用到的下载的插件及编号,添加进去

nodejsnews

package.json的内容:
dependencies

把 ‘/’ 放在最后

【1】准备:
1.把自己的index.js–>重命名为–>server.js。
2.package.json中修改为start:node server.js
3.所有js的第一行添加 ‘use strict’。 【因为用到了ES6】
4.index.html 页面中,不需要/public,直接/static就行。

【2】上传:
1.git clone
2.cd 进去
3.把他的server.js用自己的替换掉(保留原有的 port = 10808 端口)
4.把自己的dependencies的东西放进他的里面。
5.把数据库所有的东西(名字、链接、)要换掉
6.上传

################# webpack ##################
npm install -g
//-g 是安装到全局
###网址: webpack.js.org

documentation 配置
guides 向导

1.安装
npm install -g webpack
npm install -g webpack-dev-server
npm install webpack --save
npm install webpack-dev-server --save

示例

src/a.js:
var str = 'hello'; export default str;
src/b.js:
import cc from './a.js'; alert(cc);
cmd中执行: webpack src/b.js js/dist.js
html中引入 <script src="js/dist.js"></script>

再写
webpack-config.js
执行webpack -w

loader --> module

下载:
npm install node-sass --save
npm install style-loader --save
npm install css-loader --save
npm install sass-loader --save
npm install file-loader --save
npm install url-loader --save
npm install html-webpack-plugin --save
npm install clean-webpack-plugin --save

style-loader
sass-loader

打开当前目录文件夹

苹果系统用 open window用 explorer

如何学习新框架、接触新技术

学习新框架,按照官网执行一遍教程。有的框架可能是直接用人家的框架走的。先不要一个个看了

熟悉express模块

cheerio 用法 当jquery使用

let $ = cheerio.load(body);
let scripts = $(’#box01’)
.find(’.left_co3’)
.nextAll(‘script’);

fs.writeFile 方法使用 给当前目录下创建 .json文件并写入

fs.writeFile(./${name}.json,body,()=>{
console.log(${name}.json文件下载成功)
})

POST表示可能修改变服务器上的资源的请求 。继续引用上面的例子:还是新闻以网站为例,
读者对新闻发表自己的评论应该通过POST实现,因为在评论提交后站点的资源已经不同了,或者说资源被修改了。

cordova:

【安装cordova】
npm install -g cordova
cordova -v

cnpm uninstall cordova -g
cnpm install -g cordova@6.0.0

【创建项目】
cordova create myApp com.cordova.testapp
cd myApp
cordova platform add android

添加插件
cordova plugin add cordova-plugin-device

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值