Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all 14821 articles
Browse latest View live

node升级到8.x后,npm install成功但是缺少包,npm update后就好了,为何?

$
0
0

删除node_modules后,直接声明在dependency里的,通过npm install居然装不上~?(无错提示),npm update后就好了,有什么区别吗?


conde论坛在gihup上的源码是一直在更新吗?

$
0
0

下载了源码在本地运行和上线的网站不太一样。另外有没有文章是对源码进行解读的。我正在看源码。想看看别人的解读,可以看到自己没看到的地方。

express.query()是什么作用?

$
0
0

module.exports = function query(options) { var opts = Object.create(options || null); var queryparse = qs.parse; if (typeof options === ‘function’) { queryparse = options; opts = undefined; } if (opts !== undefined && opts.allowPrototypes === undefined) { // back-compat for qs module opts.allowPrototypes = true; } return function query(req, res, next){ if (!req.query) { var val = parseUrl(req).query; req.query = queryparse(val, opts); } next(); }; };

上面的作用是用来解析url的吧,但是当没有使用express.query()这个中间件的时候,req.query得到的结果还是一样的。所以产生了疑惑~~

JavaScript有这几种测试分类

$
0
0

译者按: 也许你讨厌测试,但是你不得不面对它,所以至少区分一下单元测试、集成测试与功能测试?对吧…

原文: What are Unit Testing, Integration Testing and Functional Testing?

译者: Fundebug

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习

JavaScript代码测试有很多分类,比如单元测试(unit test)集成测试(integration test)功能测试(functional test)端到端测试(end to end test)回归测试(regression test)浏览器测试(browser test)

也许你会傻傻地分不清楚,它们是什么?如何使用?什么情况下使用?这篇博客将解答你的疑问。

单元测试

单元测试指的是测试小的代码块,通常指的是独立测试单个函数如果某个测试依赖于一些外部资源,比如网络或者数据库,那它就不是单元测试

单元测试一般很容易写。一个单元测试通常是这样的:为某个函数提供某些输入值,然后验证函数的返回值是否正确。然而,如果你的代码设计非常糟糕,则单元测试会很难写。从另一个角度理解,单元测试可以帮助我们写更好的代码。

从某种意义上,单元测试就是代码的骨干。通过单元测试,可以帮助你优化代码设计,可以保证修改代码时正确无误。

单元测试可以帮助我们避免一些常见的BUG。通常,程序员会在同一个细节上反复犯错,如果为这些BUG添加单元测试,则可以有效避免这种情况。当然,你也可以使用集成测试功能测试来解决这个问题,但是单元测试更加适合,因为单元测试更加细致,可以帮助我们快速定位和解决问题。

什么时候应该做单元测试呢?采用测试驱动开发(test driven development)的话,你应该一直写单元测试。好的单元测试不仅可以避免BUG,还可以优化代码,并且保证修改或者重构代码时不会出错

流行的JavaScript单元测试工具有Mocha, JasmineTape

集成测试

集成测试就是测试应用中不同模块如何集成,如何一起工作,这和它的名字一致。集成测试与单元测试相似,但是它们也有很大的不同:单元测试是测试每个独立的模块,而集成测试恰好相反。比如,当测试需要访问数据库的代码时,单元测试不会真的去访问数据库,而集成测试则会

单元测试不够时,这时就需要集成测试了。当你需要去验证两个独立的模块,比如数据库和应用,保证它们能够正确的一起工作,这时就需要集成测试了。为了验证测试结果,你就需要通过查询数据库验证数据正确性。

集成测试通常比单元测试慢,因为它更加复杂。并且,集成测试还需要配置测试环境,比如配置测试数据库或者其他依赖的组件。这就使得编写和维护集成测试更加困难,因此,你应该专注于单元测试,除非你真的需要集成测试。

你需要的集成测试应该少于单元测试。除非你需要测试多个模块,或者你的代码太复杂时,你才需要集成测试。并且,当你的代码过于复杂时,我建议优化代码以便进行单元测试,而不是直接写集成测试。

通常,我们可以使用单元测试工具编写集成测试。

功能测试

功能测试有时候也被称作端到端测试,或者浏览器测试,它们指的是同一件事。

功能测试指的是测试应用的某个完整的功能。对于网页应用,功能测试意味着使用工具模拟浏览器,然后通过点击页面来测试应用。

单元测试可以测试单个函数,集成测试可以测试两个模块一起工作。功能测试则完全是另外一个层次。你可以有上百个单元测试,但是通常你只有少量的功能测试。这是因为功能测试太复杂了,难于编写和维护。功能测试很慢,因为它需要模拟真实用户进行网页交互。

事实上,你不需要编写非常详细的功能测试。功能测试并不意味着你需要测试每一个功能,其实,你只需要测试一些常见的用户行为。如果你需要在浏览器中手动测试应用的某个流程,比如注册账号,这时你可以编写一个功能测试。

对于单元测试,你会使用代码去验证结果,在功能测试中也应该这样做。以注册账号为例,你可以验证浏览器是否跳转到了"感谢注册"页面。

当有些测试你需要手动在浏览器下重复进行时,你应该编写功能测试。注意不要写得太细致了,否则维护这些测试将是一个噩梦。

最流行的功能测试工具是 SeleniumSelenium WebDriver或者Protractor通常与Selenium一起使用,有时也使用PhantomJSCasperJS,注意你不需要使用真实浏览器。

总结

测试JavaScript代码时,应该着重于单元测试,它非常容易编写和维护,除了可以减少BUG还有很多益处。而集成测试与功能测试应该作为补充。

欢迎加入我们Fundebug全栈BUG监控交流群: 622902485

版权声明: 转载时请注明作者Fundebug以及本文地址: https://blog.fundebug.com/2017/06/26/javascript-test-type/

【求助】vscode调试异步代码不命中或跑偏

$
0
0

express+es7-async-await,用vscode本地运行调试,端点老是诡异的跑偏或者不命中,和解?太bug了吧,如何避免呢

express 静态资源出现404的话,从chrome中可以看到两次请求,

$
0
0

如果资源存在的情况下,就没问题,但是一出现404,就是两次请求。这是个啥情况??

<script src="XXX.js"></script>

没有 XXX.js 这个文件,但是chrome中会出现两次,请求XXX.js的记录,没搞懂!

canvas时钟特效

$
0
0

<!DOCTYPE html> <html lang=“en”> <head> <meta charset=“UTF-8”> <title>时钟特效</title> <style> #canvas{ border:1px solid #ccc; display:block; margin:0 auto; } </style> </head> <body> <canvas id=“canvas”> <p>测试浏览器是否支持canvas</p> </canvas> </body> <script> var can=document.getElementById(‘canvas’); //设置宽度和高度 can.width=600; can.height=500; //获取2d绘制对象 var cxt=can.getContext(‘2d’); //绘制钟表 function draw(){ var r=200; //存储当前状态 cxt.save(); //绘制图 cxt.beginPath(); cxt.arc(300,250,r,0,Math.PI*2); // lineWidth(5) cxt.fillStyle=’#fff’; cxt.fill(); cxt.strokeStyle = ‘#FF33CC’; cxt.lineWidth = 5; cxt.stroke(); cxt.closePath(); //移动原点到 cxt.translate(300,250); //绘制时间

for(var i=0; i<60; i++){ if(i%5 == 0){ cxt.beginPath(); cxt.moveTo(0,200); cxt.lineTo(0,186); cxt.lineWidth = 4; cxt.strokeStyle = “#FF33CC”; cxt.stroke(); cxt.rotate(Math.PI/30); }else{ cxt.beginPath(); cxt.moveTo(0,200); cxt.lineTo(0,192); cxt.lineWidth = 1; cxt.strokeStyle = “#FF33CC”; cxt.stroke(); cxt.rotate(Math.PI/30); } } //当前时间 var now=new Date(); //获取当前的小时 var hour=now.getHours(); //获取当前的分钟 var minute=now.getMinutes(); //当前的妙数 var second=now.getSeconds(); // 时针 // 秒针每一秒要动 Math.PI2 / 60 cxt.save() cxt.rotate(Math.PI2*hour/12);

cxt.beginPath(); cxt.moveTo(0,10); cxt.lineTo(0,-80); // 秒针红色 cxt.strokeStyle = ‘#FF0033’; cxt.lineWidth = 5; cxt.stroke(); cxt.closePath(); // 恢复 cxt.restore(); // 绘制分针 // 秒针每一秒要动 Math.PI2 / 60 cxt.save() cxt.rotate(Math.PI2minute/60); cxt.beginPath(); cxt.moveTo(0,20); cxt.lineTo(0,-120); // 秒针红色 cxt.strokeStyle = ‘#FF0066’; cxt.lineWidth = 3; cxt.stroke(); cxt.closePath(); // 恢复 cxt.restore(); // 秒针每一秒要动 Math.PI2 / 60 cxt.save() cxt.rotate(Math.PI2second/60); cxt.beginPath(); cxt.moveTo(0,30); cxt.lineTo(0,-175); cxt.strokeStyle = ‘#FF0099’; cxt.stroke(); cxt.closePath(); // 回复 cxt.restore(); // 以该原点绘制一个红色的小圆 cxt.beginPath(); cxt.arc(0,0,5,0,Math.PI*2); cxt.fillStyle = ‘red’; cxt.fill(); cxt.closePath(); // 都绘制结束之后,将原点切换到0,0 cxt.restore(); } draw(); setInterval(function(){ // 清除一次画布 cxt.clearRect(0,0,600,500) // 重绘面板 draw(); },1000) </script> </html>

#招聘# 富途证券招 Web 前后端开发贤才

$
0
0

坐标:深圳南山科技园 港美股互联网券商富途证券招聘 Web 前后端开发,公司刚完成 C 轮融资,已达到独角兽级别,具体岗位介绍如下:

web 后端 岗位职责:
1.负责公司网站平台的证券业务系统、互联网社区特性和运营平台的设计和开发 2.对现有的 Web 业务系统的维护、升级改造和性能优化。 3.与团队其他角色紧密配合工作,共同创造稳定易用的产品;

岗位要求: 1.2 年以上的 Web 后端开发经验,语言不限(PHP、Python、Nodejs) 2.熟练使用 MySQL,良好的数据库设计和丰富的优化经验 3.熟悉 NoSQL 技术(redis,memcached 等) 4.有 Web 安全意识,熟悉常见的 Web 安全问题以及防御措施 5.熟悉 linux web 开发平台及工具,熟悉 nginx 服务器的配置优化工作 6.了解 web 前端开发技术和常见的前端优化技巧 7.有较强的学习能力,有良好沟通能力以及团队协作精神,能够承担工作压力

web 前端 职位描述: 1. 完成各种网站项目需求 2. 开发 mobile web 以及 webapp 3. 参与前端技术选型、架构 4. 参与开发接入层( Node )

职位要求: 1. 前端基础扎实,深入理解浏览器和 DOM 原理 2. 能独立完成各种变态前端需求 3. JavaScript 基础扎实,功底深厚 4. 具备较好的 CSS 能力 5. 加分项:有 Node.js 经验 6. 加分项:有后台开发经验 7. 加分项:理解产品、交互或视觉设计方法和流程

有意者请发简历到邮箱: evanyan@futunn.com


有没有js识别二维码的插件

$
0
0

使用jsqrcode后,图片含有二维码无法识别,必须是单独的二维码图片才能识别。有没有可以的推荐

又来问答了,哈哈哈哈哈哈

$
0
0

image.png

我想通过上面的仨按钮来跳转到其他的路由底下去,这个前端的js该怎样写呢。是发送一个Ajax请求到相应的页面路由吗? 这个方法我试过了,可以response到,但是没法渲染整个页面,难道是我思路错了?

放一下其他的一些相关的东西。

(这个是本来的思路,通过Ajax来获取,但是渲染不了) image.png

(这个是相关的路径,当前这个通过点击发起请求的是main目录底下的一个js文件。我想通过点击来获取的是admin目录底下的user目录的js文件) image.png

好像说的有点拗口。求助呀

使用axios的一些疑问

$
0
0

axios把数据封装了一层, 如何去掉?

axios捕捉不到错误号大于400返回的数据,有没有什么办法?(我拿cnode社区的api, 每次返回来401这种错误, 后台返回的提示信息,catch捕捉不到)

axios的 timeout 的用处?

express如果获取ajax发送的data

$
0
0

$.ajax({ type:“POST”, url:"/purchase/applyForPurchase", dataType:“json”, //timeout:3500, data:idList, //data数据是idList=[ // {_id:12312312}, // {_id:35464564} //] success:function(data){ if (data) {//根据返回值进行跳转 //window.location.href = ‘你的跳转的目标地址’; console.log(data) } } })

exports.applyForPurchase=function(req,res){ console.log(req.body) } 然后打印出{ undefined: [ ‘’, ‘’ ] }

anyproxy代码也是够乱的

$
0
0

https://github.com/alibaba/anyproxy

  • 有没用的文件,比如certGenerator
  • 无引用随处可见,比如httpsServerMgr,一般以上是无用的。。。
  • 测试用koa1,开发依赖express4
  • webui和cli和核心库放在一起,合体。。。
  • 那测试也是极其酸爽的

剩下的你们来补充吧

为什么很少招node做后台,php java的很多

$
0
0

<p data-v-087651fa="">请输入内容。。。</p><p><b>为什么很少招node做后台,php java的很多</b></p><p><br></p>

百度搜索原理是什么

$
0
0

不可能一个值就把整个网页都遍历了吧 那数据也太大了


乘法计算的问题。有什么好的解决方法么?

$
0
0

屏幕快照 2017-06-27 上午9.57.38.png

> 0.1 * 0.2
0.020000000000000004
> 69.99 * 100
6998.999999999999
> 129.99 * 100
12999

node+express+mongoose一个小demo

$
0
0

1.clone项目 git clone https://github.com/wodb/node-express-mongoose.git 2.切换路径运行 cd ./node-express-mongoosenpm run strt提示 :绑定的是IP,下在下来需要把config.serverURL换成自己的,也可以换成localhost。数据库用的数mongo 连接的test库

// 开启服务器连接
mongoose.connect(config.database)
// 开启监听事件
mongoose.connection.on('connected', () => {
    console.log(`成功开启服务器:${config.database}`)
})

[南昌]南昌数特网络科技有限公司 招聘Node.js后端工程师(8k-15k)

$
0
0

职位要求

拥有至少一年的Node.js开发经验,JavaScript 基本概念清晰,熟练掌握闭包、回调、Promise 等 能熟练使用MongoDB、mongoose、express、Nginx、varnish; 对lodash、async等有一定的了解; 熟悉Github、SVN; 能熟练使用Linux指令者优先; 代码质量要精益求精,注重代码的维护和优化,能够独立完成开发任务。

工作地点:江西省南昌市高新区紫阳大道云中城A座1501室 邮箱:coinvc@qq.com

如果你技术牛逼,可以忽略以上任意条件,薪资自己定

[春雨医生] [招聘] web 前端开发/自然语言处理/数据挖掘工程师/ 算法/服务器研发

$
0
0

我们技术上“有态度”,立志将产品技术和用户体验做到极致 对于中国医疗现状,我们绝对是移动健康大平台 我们一直在努力让好的产品收获应有的价值 我们也坚持在代码质量等各个层面都能做出成绩

在此 希望等到你对春雨所服务事业的价值认同,期待能得到与您当面交流的机会,为春雨的未来事业争取更多令人欣喜的血液 我希望用你所收获的专业知识和思考,帮助春雨医生获得更多的关注、俘获更多的用户、赢得应有的价值。

web 前端开发工程师

负责春雨 PC 端开发以及移动端(主)的 web 研发工作; 负责前端架构设计、组件优化等技术优化、技术创新工作; 与设计师、后端研发等人员一起实现产品功能,优化产品用户体验; Web 前沿技术研究和新技术调研;

服务器研发工程师

1、参与 /负责服务器业务开发,为上亿全球用户提供稳定可靠的服务;

2、参与 /负责研发数据平台,对上亿用户进行行为分析等;

3、参与服务器系统代码重构和微服务体系建设;

4、分析现有系统的不足,找到并优化目前系统的瓶颈, 提高系统性能;

5、优化服务器的底层技术,包括网络通信、数据库、缓存和服务器架构等。

算法 /自然语言处理 /数据挖掘

参与知识图谱,问答系统,推荐系统研发,并根据线上反馈提升效果。 参与中文分词,命名实体识别,句法分析的研发与应用。

[春雨医生]

春雨医生是中国乃至世界上最大的移动医患交流平台,也是中国移动健康( M-health )的第一品牌。致力于为国人提供更优质、经济、便捷的健康服务。

公司成立于 2011 年 7 月,主产品「春雨医生」 App 于 2011 年 11 月上线,专注于利用手机终端实现医生与患者随时随地的远程交流,并在此基础上,面向个人用户、医药企业、医疗机构、地方政府,提供健康档案、空中医院、互联网医院和开放平台等深入服务,发展成为了一个大型的移动医疗服务平台。此外,春雨医生沉淀大量技术和知识资产,在机器学习、人工智能和互联网技术开发等能力上处于行业内绝对领先的水平,同时携手医院等机构合作,研究共同面临的新业务和技术课题。

春雨医生目前已吸引超过 50 万公立医院执业医师入驻,累积服务患者超过 2 亿人次,成为破解我国就医难题的有效途径。秉承“开放、联结、共赢”的企业精神,春雨医生正在成为一家集“智能技术驱动、医疗资源整合和健康服务创新”于一体的行业领导者。

[春雨团队]

如果你也拥有冒险精神,乐于颠覆传统挑战未知;

如果你也具有先锋品质,勇于成为移动医疗开拓者;

如果你也怀揣浪漫情怀,致力建造新医疗生态;

那么,欢迎你成为春雨的一员。

[春雨福利]

1.免费的午餐;

2.每年一次免费体检,捷足先登的医疗服务;

3.每年 10 天带薪年假;

4.每月享有福利卡补贴;

5.每月“一呼百应”的活动;

6.每周享有的羽毛球、篮球、台球、乒乓球健身活动;

7.匹配休息室、健身房的办公环境。

[公司地址]

北京海淀学院路甲 5 号 768 创意产业园 A 座东区 2 号门 2 层

[联系我们] 有意者请发送简历至 recruit@chunyu.me,邮件标题为 名字 + 职位 +CNODEJS,

您可以登录我们的网站了解更多信息: http://www.chunyuyisheng.com

NODEJS 测试工具,求推荐

$
0
0

请各位大牛推荐NODEJS的测试工具,谢谢! 顺便问问大家是怎么测试Javascript 前端程序的?谢谢!

Viewing all 14821 articles
Browse latest View live