A. 如何用nodejs执行js代码
nodejs就是js啊,两个是一种语言,只是运行的环境不同而已,nodejs是在服务器端运行,而js是在客户端浏览器上运行。不太懂你说的什么意思?
你的意思是不是希望让nodejs像浏览器一样模拟运行一个窗口,如果是这样你可以考虑用nodejs的phantom模块,我们一般用这个模块来模拟浏览器界面截图用。
如果你是想让nodejs加载另一个js文件,你可以用nodejs本身提供的require模块,加载文件。当你也可以自己写一个fs读取js文件,然后eval文件里的语句。
B. 如何对nodejs代码加密国内,除了 jshaman 还有别的nodejs保护提供商吗
JS代码加密,JShaman就非常好用,国内目前好像没有别的了,这个最专业。
C. 怎么自己检查NodeJS的代码是否存在内存泄漏
首先,我们来看一个简单的内存泄漏
var http = require('http');
var server = http.createServer(function (req, res) {
for (var i=0; i<1000; i++) {
server.on('request', function leakyfunc() {});
}
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
server.setMaxListeners(0);
console.log('Server running at http://127.0.0.1:1337/. Process PID: ', process.pid);
每一个请求我们增加了1000个导致泄漏的监听器。如果我们在一个shell控制台中执行以下命令:
while true; do curl "http://127.0.0.1:1337/"; done
然后在另外一个shell控制台中查看我们的进程
top -pid
我们会看到node进程产生异常高的内存占用,我们的node进程看起来失控了。那么,当我们的node进程出现这种情况的时候,通常我们该怎样诊断出问题的根源?
内存泄露的检测
npm模块 memwatch 是一个非常好的内存泄漏检查工具,让我们先将这个模块安装到我们的app中去,执行以下命令:
npm install --save memwatch
然后,在我们的代码中,添加:
var memwatch = require('memwatch');
//memwatch.setup(); 原文有这行代码,最新版本的memwatch已去掉这个方法(译者注)
然后监听 leak 事件
memwatch.on('leak', function(info) {
console.error('Memory leak detected: ', info);
});
这样当我们执行我们的测试代码,我们会看到下面的信息:
{
start: Fri Jan 02 2015 10:38:49 GMT+0000 (GMT),
end: Fri Jan 02 2015 10:38:50 GMT+0000 (GMT),
growth: 7620560,
reason: 'heap growth over 5 consecutive GCs (1s) - -2147483648 bytes/hr'
}
参考文献https://w3ctech.com/topic/842#rd?sukey=0e1af5eeb690c5521ad1e164fb
D. 我想给一些菜鸟看看nodejs的代码应该怎么写
var cookie = require('cookie');
mole.exports = function (req, res, conf, views, db) {
..var body = req.body,
....id = req.ids[0],
....usid = cookie.parse(req.headers.cookie).usid;
..function redirect () {
....res.writeHead(302, { 'location' : '/accounts' });
....res.end();
..}
..function joinpage () {
....res.writeHead(200, { 'Content-Type' : 'text/html;charset=utf-8' });
....res.write(views.ACCOUNTS_JOIN);
....res.write(views.unit({
......id : 'accounts_menu',
......name : 'accounts_menu',
........options : {
..........class_id : id
........}
....}));
....res.write(views.unit({
......id : 'accounts_join',
......name : 'accounts_join',
......options : {
........action : '/accounts/' + id + '/join',
........num : '0'
......}
....}));
....res.end(views.FOOTER);
..}
..db.session(usid, function (state) {
....// 已经建立会话
....if (state) {
......joinpage();
......return;
....}
....// 没有建立会话
....redirect();
..});
};
//////////////////////////////////////////////////////////////////////////////////////////////////////////
这段代码,是nodejs其中一个路由处理函数.
使用到了views视图模型,db数据库模型,以及conf全局配置文件.
并且使用了cookie模块来解析会话ID.
views视图模型 : 生产HTML界面 [可以随时切换到PC或者移动HTML,接口一致]
db数据模型 : 生产数据库数据
conf全局配置文件 :你所需要的全局环境内容
代码的功能:
检测请求
....是否建立会话?
........是,跳转到"/"路由
........否,为用户显示登录界面
其中views负责生产视图界面, 在views模型中缓存了大量的常量,类似ACCOUNTS_JOIN,是页面布局。
对于其中的动态内容,采用facebook的bigpipe技术。
views.unit(/*id, name, css, js, content*/)输出script片段,分流到浏览器渲染。
整个服务器端在启动时渲染完毕所有的页面布局体,并缓存到views模型中,动态内容由bigpipe发送到前端渲染。
E. 谁能将这段nodejs代码翻译成java代码
Stringsk="xxx";
KeyGeneratorgenerator=KeyGenerator.getInstance(“HmacSHA256”);
SecretKeykey=generator.generateKey();
Macmac=Mac.getInstance(key.getAlgorithm());
mac.init(key);
byte[]bytes=mac.doFinal(str.getBytes());
StringBuffersb=newStringBuffer();
for(inti=0;i<bytes.length;i++){
intt=bytes[i];
sb.append(Integer.toString(t>>4&0xF,16)).append(
Integer.toString(t&0xF,16));
}
Stringsignature=sb.toString();
F. nodejs源码阅读求助
uv.这个是作者自己基于libev和libeio封装的一个用于处理nodejs异步事件循环的库,用libeio是因为,linux下,对于传统文件的读写操作时必然会导致阻塞的,那么如何处理异步呢,那就用了libeio,eio是一个用多线程来模拟异步的库,查看他的源码就会知道,默认的线程池是4个线程,LZ说的应该是这个。一年多以前ev库就被弃用了
G. 请问国内有没有用nodejs开发的微商城源码,比较完备的
可以去H5e看看,HTML5课程融合了HTML5开发基础课程、CSS3基础课程和移动前端交互JavaScript+JQuery+Ajex,还有微信开发课程
H. nodejs怎么把html以源码的形式在网页中显示了,而不是解析它
可以通过设置输出到浏览器的'Content-Type的值为text/html即文本类型的html即可实现将html代码发送到浏览器中解释,而如果设置的值为text/plain则值会显示为文本而不会被浏览器渲染。
代码实例如下:
consthttp=require('http');
consthostname='127.0.0.1';
constport=3000;
constserver=http.createServer((req,res)=>{
res.statusCode=200;
res.setHeader('Content-Type','text/html');
res.end("<pstyle='color:red;font-size:30px;'>helloworld</p>");
});
server.listen(port,hostname,()=>{
console.log(`服务器运行在http://${hostname}:${port}/`);
});
运行的结果如下:
I. nodejs开发,有什么实用的调试技巧,怎么调试nodejs代码
用个ide或者增强型的代码编辑器就好了。windows上vscode,webstrom都能使用。或者直接用node的debug命令,nodejs官网有相关文档,其他编辑器,ide基本也是调用他debug..
J. 超实用的nodejs代码段怎么样
不好。
可以考虑朴灵的那本深入浅出不错的,虽然有点老了。
还有一本不错,nodejs实战,算是新出的。