Node学习
参见Node入门 做出node应用的第一个例子 图片上传浏览。
过程中遇到的问题:
1.npm安装formidable模块失败的解决办法
借鉴:解决途径
直接去github下载formidable模块(地址:https://github.com/felixge/node-formidable)
2.运行错误:fs.js:330 return binding.rename(pathModule._makeLong(oldPath)
借鉴:解决途径 中的代码:
1 function upload(response, request) { 2 console.log("Request handler 'upload' was called."); 3 var form = new formidable.IncomingForm(); 4 form.uploadDir = "tmp" 5 console.log("about to parse"); 6 form.parse(request, function(error, fields, files) { 7 console.log("parsing done"); 8 console.log("F.U.P: " + files.upload.path); 9 setTimeout(function(){ 10 try{ 11 fs.renameSync(files.upload.path, "./tmp/test.png"); 12 }catch(e){ 13 console.log(e); 14 } 15 response.writeHead(200, {"Content-Type": "text/html"}); 16 response.write("received image:<br/>"); 17 response.write("<img src='/show' />"); 18 response.end(); 19 },1000 20 ); 21 }); 22 }
3.运行错误 Error: ENOENT( 图片目录放置的问题)
借鉴:解决途径
安装出错
借鉴: http://www.dedecms.com/knowledge/web-based/javascript-ajax/2012/0723/3484.html
最后的解决办法是:以管理员身份打开命令符,然后去安装,没想到成功了。记录忘记保存了,因为不知道可不可以用,现在证明可用。
后面为啥还会有这个??
途中还遇到个这样的问题 Error:listen EADDRINUSE 看到下面的解释就知道发生什么事了。。
CSS中的2个重要概念块状元素和内联元素 参考资料:来源
对JS中的prototype的理解
event.stopPropagation() 方法的理解:
不再派发事件。
终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调 用,事件不再被分派到其他节点。
//显示表情 _showEmoji: function(msg) { var match, result = msg, reg = /\[emoji:\d+\]/g, emojiIndex, totalEmojiNum = document.getElementById('emojiWrapper').children.length; while (match = reg.exec(msg)) { emojiIndex = match[0].slice(7, -1); if (emojiIndex > totalEmojiNum) { result = result.replace(match[0], '[X]'); } else { result = result.replace(match[0], '<img class="emoji" src="../content/emoji/' + emojiIndex + '.gif" />'); }; }; return result; }
从中学到的知识点有
1.reg.exec()
2.slice()
3.replace()
GitHub代码更新问题
借鉴资料http://blog.csdn.net/shiren1118/article/details/7761203
Codeship初次见面:http://blog.codeship.io/2014/04/03/continuous-deployment-modulus-github-nodejs.html
Heroku的初次见面:https://devcenter.heroku.com/articles/getting-started-with-nodejs
http://www.oschina.net/question/12_17345 Node.js MVC框架学习
1.exports 相当于C#中的publish,当这个模块被require导入时,exports后的方法可以被访问到,具体看一个node的模块导入系统:
//test.js
var myPrivate = '私有';
exports.myPublish = '公开';
this.myPublish2 = 'this也可以哦';
console.log('test.js loaded \n');
执行结果:
从结果中我们可以看出exports和this下的变量在外部导入模块后,可以被外部访问到,而var定义的变量只能在脚本内部访问。 从mytest2结果还可以看出,第二次require导入test模块时,并没有打印"test.js loaded",因为require导入模块的时候,会先从require.cache中检查模块是否已经加载,如没有,才会从硬盘中查找模块脚本并加载。require支持相对路径查找模块,例如require('./test')中的"./"就代表在当前目录下查找。如果不是相对路径,例如require('http'),node则会到require.paths中去查找,看下自己的系统require.paths为:
这个要等等了,不知道为啥是这个了。。。