魏长东

weichangdong

正在查看: nodejs 分类下的文章(第 1 页 / 共 6 篇)

phantomjs casperjs 太牛逼了(没有之一)

//var server = require('webserver').create();
var casper = require('casper').create({
    verbose: true,
    logLevel: 'debug'
});
 
var system = require('system');
//casper.echo(system.args[4]);
//phantom.exit();
var  pass = system.args[4];

var verify = '';
casper.echo("==========");
 
 
casper.start('http://weichangdong.com/index.php/admin');

casper.then(function(){
	this.fill('form',{
		'name': 'admin',
		'password': pass
	},false);
});

// casper.thenClick('#name');
//casper.thenClick('#password');
casper.thenClick('form button');

casper.run(function(){
	var self = this;
	casper.echo("============="+self.getCurrentUrl()+'=======');

	if(self.exists('#typecho-message')){
		this.echo('get content ... ','ERROR');
		self.captureSelector('verify.png', '#typecho-message');
	}else{
		self.capture('renren.png');
	}
	self.exit();
});

casperjs login189.js pass

直接部分截图成功!!!!!!

有时间好好研究下

nodejs的process

process模块允许你获得或者修改当前node进程的设置,不想其他的模块,process是一个全局进程(node主进程),你可以直接通过process变量直接访问它。

  process实现了EventEmitter接口,exit方法会在当进程退出的时候执行。因为进程退出之后将不再执行事件循环,所有只有那些没有回调函数的代码才会被执行。在下面例子中,setTimeout里面的语句是没有办法执行到的。

process.on('exit', function () {
  setTimeout(function () {
    console.log('This will not run');
  }, 100);
  console.log('Bye.');
});

在你接触node之后,你就会发现那些影响了主事件循环的异常会把整个node进程宕掉的。这会是相当严重的问题,所以process提供了另外一个有用的事件uncaughtException来解决这个问题,他会把异常抓取出来供你处理。

process.on('uncaughtException', function (err) {
  console.log('Caught exception: ' + err);
});
setTimeout(function () {
  console.log('This will still run.');
}, 500);
// Intentionally cause an exception, but don't catch it.
nonexistentFunc();
console.log('This will not run.');

 我们来看上面的例子,我们注册了uncaughtException事件来捕捉系统异常。执行到nonexistentFunc()时,因为该函数没有定义所以会抛出异常。因为javascript是解释性的语言,nonexistentFunc()方法上面的语句不会被影响到,他下面的语句不会被执行。所以他的执行结果如下:

Caught exception: ReferenceError: nonexistentFunc is not defined
This will still run.

在看个例子

»»阅读全文

nodejs入门

“Hello World”

好了,“废话”不多说了,马上开始我们第一个Node.js应用:“Hello World”。

打开你最喜欢的编辑器,创建一个helloworld.js文件。我们要做就是向STDOUT输出“Hello World”,如下是实现该功能的代码:

console.log("Hello World");

保存该文件,并通过Node.js来执行:

node helloworld.js

正常的话,就会在终端输出Hello World 

好吧,我承认这个应用是有点无趣,那么下面我们就来点“干货”。

一个完整的基于Node.js的web应用

用例

我们来把目标设定得简单点,不过也要够实际才行:

  • 用户可以通过浏览器使用我们的应用。
  • 当用户请求http://domain/start时,可以看到一个欢迎页面,页面上有一个文件上传的表单。
  • 用户可以选择一个图片并提交表单,随后文件将被上传到http://domain/upload,该页面完成上传后会把图片显示在页面上。

差不多了,你现在也可以去Google一下,找点东西乱搞一下来完成功能。但是我们现在先不做这个。

更进一步地说,在完成这一目标的过程中,我们不仅仅需要基础的代码而不管代码是否优雅。我们还要对此进行抽象,来寻找一种适合构建更为复杂的Node.js应用的方式。

应用不同模块分析

我们来分解一下这个应用,为了实现上文的用例,我们需要实现哪些部分呢?

  • 我们需要提供Web页面,因此需要一个HTTP服务器
  • 对于不同的请求,根据请求的URL,我们的服务器需要给予不同的响应,因此我们需要一个路由,用于把请求对应到请求处理程序(request handler)
  • 当请求被服务器接收并通过路由传递之后,需要可以对其进行处理,因此我们需要最终的请求处理程序
  • 路由还应该能处理POST数据,并且把数据封装成更友好的格式传递给请求处理入程序,因此需要请求数据处理功能
  • 我们不仅仅要处理URL对应的请求,还要把内容显示出来,这意味着我们需要一些视图逻辑供请求处理程序使用,以便将内容发送给用户的浏览器
  • 最后,用户需要上传图片,所以我们需要上传处理功能来处理这方面的细节

我们先来想想,使用PHP的话我们会怎么构建这个结构。一般来说我们会用一个Apache HTTP服务器并配上mod_php5模块。
从这个角度看,整个“接收HTTP请求并提供Web页面”的需求根本不需要PHP来处理。

不过对Node.js来说,概念完全不一样了。使用Node.js时,我们不仅仅在实现一个应用,同时还实现了整个HTTP服务器。事实上,我们的Web应用以及对应的Web服务器基本上是一样的。

听起来好像有一大堆活要做,但随后我们会逐渐意识到,对Node.js来说这并不是什么麻烦的事。

现在我们就来开始实现之路,先从第一个部分--HTTP服务器着手。

»»阅读全文

nodejs 发get post请求

有时候在linux下,发送post一般用curl然后-d带上post数据,或者直接写php代码来发送请求。

用nodejs实现了下发送get和post请求。

post是向我的本地环境发送的,所以需要开启服务。node post 就OK。

var http = require("http");
http.createServer(function(req, res) {
	var body = [];
res.write(req.method);
//console.log(req.method);
    if(req.method == 'GET') {
		//res.write(res.query.toString());
		res.end("PATH: " + req.url);
	} else {
		//console.log(req.headers);
		req.on('data', function (chunk) {
			body.push(chunk);
		});

		req.on('end', function () {
			body = Buffer.concat(body);
			console.log(body.toString());
		});
	}
}).listen(8080);
console.log("HTTP server is listening at port 8080.");

»»阅读全文

nodejs 连接mysql

发现nodejs和lua差不多,就是用各种第三方的包。这一点我觉得远远比不上php,多数东西都可以自己搞定,就算用第三方,比如redis memcache,装个扩展,很easy搞定。

nodejs连接mysql主要是装nodejs的mysql的package。

»»阅读全文

nodejs 接受参数

接收post请求的参数时用req.body;
接收get请求的参数时用req.query;

nodejs 初始化代码

var http = require("http");
var express = require("express");
var session = require("cookie-session");
var cookieParser = require("cookie-parser");
var bodyParser = require("body-parser");
var cfg = require("./cfg");
var urls = require("./wcd");

var app = express();
app.engine("html", (require("ejs")).renderFile);

app.set("view engine", "ejs");
app.set("views", __dirname + "/views");
app.use(express.static(__dirname + "/static"));

app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.use(session({
 keys: ["ozgweb"]
}));

//url路由
urls.startUrls(app);

app.on("close",
 function(err) {
  console.log("app close");
 }
);

(http.createServer(app)).listen(cfg.SERVER_PORT,
 function() {
  console.log(cfg.SERVER_PORT + "正在运行中...");
 }
);