var

[js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist

筅森魡賤 提交于 2020-03-30 05:04:35
promise主要是用来解决异步回调问题,其实还有好几种比promise更好的方案,后面再说,这节,我们先用promise来改造下,我以前写的一篇文章 [js高手之路]javascript腾讯面试题学习封装一个简易的异步队列 中的一道面试题( 页面上有一个按钮,一个ul,点击按钮的时候,每隔1秒钟向ul的后面追加一个li, 一共追加10个,li的内容从0开始计数( 0, 1, 2, ....9 ) ). promise的小实例: 1 function next1(){ 2 return new Promise( function( resolve, reject ){ 3 console.log( 'next1' ); 4 resolve( 'jump to next2' ); 5 } ); 6 } 7 8 function next2(){ 9 return new Promise( function( resolve, reject ){ 10 console.log( 'next2' ); 11 resolve( 'jump to next3' ); 12 } ); 13 } 14 15 next1().then( function( res ){ 16 console.log( res ); 17 return next2(); 18 } ).then( function(

JS事件派发器EventEmitter

让人想犯罪 __ 提交于 2020-03-30 04:39:37
原文地址: http://zhangyiheng.com/blog/articles/js_event_mitter.html 需求 随着Browser客户端JS越来越复杂,MVC( Client端)设计模式成为一个很好的开发选择, 而MVC开发模式中,最基础的功能就是把Model和View关联起来, 当Model发生变化的时候,View呈现做出相应的调整。 实现此功能最合适的方式莫过于事件Event了, 对于Event大家应该都很熟悉,比如dom中的button,可以通过addEventListener/attachEvent添加click事件处理。 而一般的object对象是没有事件派发功能的,基于此需求,实现了一个EventEmitter。 具体实现 /** * Created by taozh on 2017/6/22. * taozh1982@gmail.com */ var EventEmitter = function () { this.__z_e_listeners = {}; }; EventEmitter.prototype.on = function (evt, handler, context) { var handlers = this.__z_e_listeners[evt]; if (handlers === undefined) {

原生nodejs 学习笔记1

烈酒焚心 提交于 2020-03-30 04:38:59
网上许多nodejs教程或书藉都是教你调用第三方模块来编写nodejs应用的,虽然这是非常便捷的,但是封装太厚,你基本一点东西还是没有学到。人家的模块,人家想怎么改就行,可以下一版本就改了接口,你的应用就完蛋了。比如说google,他就爱干这种事情。因此我们还得老老实实学习底层API吧。 本节首先教大家跑起一个页面吧。 我在以前就写一篇相关的, node.js 一个简单的页面输出 ,大家可以先预习一下。 一般来说,大家都是从这样一个例子入门 var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello node.js"); response.end(); }).listen(8888); 上面脚本写在一个app.js上面,然后打开控制台,定位于它所在目录,输入node app,再打开某一浏览器,输入http://localhost:8888/就看出效果。 分析上面脚本: 引入依赖,这是前端AMD规范未流行前, 非常神奇的东西。不过一个项目这么大,肯定要分成N个目录N个文件,各人负责一部分,减少合并冲突的风险 require("http"

js 测试

依然范特西╮ 提交于 2020-03-30 03:56:45
今天js测试题目: 被基础题目虐暴。。。。。。惨不忍睹 1. var num = 2; switch(num){   case 1: console.log("1");   case 2: console.log("2");   default: console.log("default"); }输出结果为()// 2和default; 从2进入switch,因为没有break;所以2以后的都要执行。 2.js中的命名法: 1)匈牙利命名法 2)大驼峰 3)小驼峰 4)下划线命名法 (当时没有想起来!!) 3.在数组末端添加元素 push(); 在数组末端删除元素 pop(); 在数组第一个位置添加元素 unshift(); 在数组第一位置删除元素 shift(); 颠倒数组元素 reverse(); 4.生成对象的三种方法: 1) var obj = {}; 2) var obj = new Object(); 3) Var obj = Object.create(null); // 他是基于另一个对象而生成的对象,可以继承上一个对象的属性,也可以添加和改变。 var obj1 = { name : "zdh", age: 21 } var obj2 = Object.create(obj); console.log(obj2.age); //21

<Node入门经典>读书笔记

孤人 提交于 2020-03-30 03:31:30
最近在读<Node入门经典>, 之前没有做笔记, 今天开始把看过自己又写了的代码放这里以免忘记. express var express = require('express') var app = express() app.get('/', function (req, res) { res.send('Hello World') }) app.listen(3000) View Code route var http = require('http'); var url = require('url'); http.createServer(function(req,res){ var name = url.parse(req.url).pathname; if (name === '/'){ res.writeHead(200,{ 'Content-Type':'text/plain' }); res.end('home page'); } else if (name === '/about'){ res.writeHead(200,{ 'Content-Type':'text/plain' }); res.end('about me'); } else if (name === '/redirect') { res.writeHead(301,{ 'location':

nodejs笔记-2017.4.13

本秂侑毒 提交于 2020-03-30 03:22:08
原文链接: http://nqdeng.github.io/7-days-nodejs/#1 模块 编写稍大一点的程序时一般都会将代码模块化。在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名。 在编写每个模块时,都有 require 、 exports 、 module 三个预先定义好的变量可供使用。 require 函数用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象。模块名可使用相对路径(以 ./ 开头),或者是绝对路径(以 / 或 C: 之类的盘符开头)。另外,模块名中的 .js 扩展名可以省略。以下是一个例子。 var foo1 = require('./foo'); var foo2 = require('./foo.js'); var foo3 = require('/home/user/foo'); var foo4 = require('/home/user/foo.js'); // foo1至foo4中保存的是同一个模块的导出对象。 另外,可以使用以下方式加载和使用一个JSON文件。 var data = require('./data.json'); exports 对象是当前模块的导出对象,用于导出模块公有方法和属性。别的模块通过 require 函数使用当前模块时得到的就是当前模块的

Node.js API —— Modules(模块)

你离开我真会死。 提交于 2020-03-30 03:18:34
// 说明 Node API 版本为 v0.10.31。 中文参考: http://nodeapi.ucdok.com/#/api/ , http://blog.sina.com.cn/oleoneoy 本段为博主注解。 目录 ● 模块 ○ Cycles ○ Core Modules ○ File Modules ○ Loading from node_modules Folders ○ Folders as Modules ○ Caching ■ Module Caching Caveats ○ The module Object ■ module.exports ■ exports.alias ■ module.require(id) ■ module.id ■ module.filename ■ module.loaded ■ module.parent ■ module.children ○ All Together... ○ Loading from the global folders ○ Accessing the main module ○ Addenda: Package Manager Tips 模块 稳定性:5 - 锁定 Node 有一个简单的模块加载系统。在 Node 里面,文件和模块是一一对应的。举个例子, foo.js 加载同一目录下的模块 circle

Javascript 字符串拼接

∥☆過路亽.° 提交于 2020-03-30 02:30:08
1 var times = 100000; 2 var text = "测试字符串"; //5 3 function arrTest() { 4 var arr = []; 5 for (var i = 0; i < times; i++) { 6 arr.push(text); 7 } 8 arr.join(''); 9 //IE6 181-193 10 //IE8 78-89 11 //IE9 33-48 12 //FF13 14-23 13 } 14 15 function addTest() { 16 var txt = ""; 17 for (var i = 0; i < times; i++) { 18 txt += text; 19 } 20 //FF13 3 21 //IE9 31-46 22 //IE8 39-51 23 //IE6 19417 24 } 25 26 var dtime = new Date(); 27 addTest(); 28 document.write(new Date() - dtime); 公司 IE7 不知为何 蹦了。 没有google,opera,safari的环境 回家做一个全面的测试 当然 上面测试页不完全,因为不知道 一直使用同一个字符串拼接会不会有缓存. 来源: https://www.cnblogs.com

JQuery 实现的一个倒计时脚本

不想你离开。 提交于 2020-03-30 02:09:22
//先看看代码再详细说明 <script type="text/javascript"> var SysSecond; var InterValObj; $(document).ready(function() { SysSecond = parseInt($("#hdfSysRemainSecond").val()); //这里我是在服务端算好了剩余的秒数,并保存到客户端,如果过期则返回0 InterValObj = window.setInterval(SetRemainTime, 1000); // 间隔函数,1秒执行 }); //代理 function SetRemainTime() { if (SysSecond > 0) { //alert(SysSecond); SysSecond = SysSecond - 1; var second = Math.floor(SysSecond % 60); // 计算秒 var minite = Math.floor((SysSecond / 60) % 60); //计算分 var hour = Math.floor((SysSecond / 3600) % 24); //计算小时 var day = Math.floor((SysSecond / 3600) / 24); //计算天 $("#lblRemainTime")

bobojQuery实现倒计时效果

此生再无相见时 提交于 2020-03-30 02:08:59
使用jQuery实现倒计时效果,这个实例是在页面上显示剩余几天几小时几分几秒的效果。 在头部引用最新的jQuery.js文件: <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="jQuery.js" type="text/javascript"></script> </head> 前台页面: <body> <div id="remainSeconds" style="display:none">180000</div> <div id="remainTime" style="font-size:20px;font-weight:800;color:#FF9900"></div> </body> jQuery代码: <script type="text/javascript" language="javascript"> var SysSecond; var InterValObj; $(document).ready(function() { SysSecond = parseInt($("#remainSeconds").html()); InterValObj = window.setInterval(SetRemainTime, 1000); })