删除node_modules后,直接声明在dependency里的,通过npm install居然装不上~?(无错提示),npm update后就好了,有什么区别吗?
node升级到8.x后,npm install成功但是缺少包,npm update后就好了,为何?
conde论坛在gihup上的源码是一直在更新吗?
下载了源码在本地运行和上线的网站不太一样。另外有没有文章是对源码进行解读的。我正在看源码。想看看别人的解读,可以看到自己没看到的地方。
express.query()是什么作用?
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有这几种测试分类
译者按: 也许你讨厌测试,但是你不得不面对它,所以至少区分一下单元测试、集成测试与功能测试?对吧…
原文: 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, Jasmine和Tape。
集成测试
集成测试就是测试应用中不同模块如何集成,如何一起工作,这和它的名字一致。集成测试与单元测试相似,但是它们也有很大的不同:单元测试是测试每个独立的模块,而集成测试恰好相反。比如,当测试需要访问数据库的代码时,单元测试不会真的去访问数据库,而集成测试则会。
单元测试不够时,这时就需要集成测试了。当你需要去验证两个独立的模块,比如数据库和应用,保证它们能够正确的一起工作,这时就需要集成测试了。为了验证测试结果,你就需要通过查询数据库验证数据正确性。
集成测试通常比单元测试慢,因为它更加复杂。并且,集成测试还需要配置测试环境,比如配置测试数据库或者其他依赖的组件。这就使得编写和维护集成测试更加困难,因此,你应该专注于单元测试,除非你真的需要集成测试。
你需要的集成测试应该少于单元测试。除非你需要测试多个模块,或者你的代码太复杂时,你才需要集成测试。并且,当你的代码过于复杂时,我建议优化代码以便进行单元测试,而不是直接写集成测试。
通常,我们可以使用单元测试工具编写集成测试。
功能测试
功能测试有时候也被称作端到端测试,或者浏览器测试,它们指的是同一件事。
功能测试指的是测试应用的某个完整的功能。对于网页应用,功能测试意味着使用工具模拟浏览器,然后通过点击页面来测试应用。
单元测试可以测试单个函数,集成测试可以测试两个模块一起工作。功能测试则完全是另外一个层次。你可以有上百个单元测试,但是通常你只有少量的功能测试。这是因为功能测试太复杂了,难于编写和维护。功能测试很慢,因为它需要模拟真实用户进行网页交互。
事实上,你不需要编写非常详细的功能测试。功能测试并不意味着你需要测试每一个功能,其实,你只需要测试一些常见的用户行为。如果你需要在浏览器中手动测试应用的某个流程,比如注册账号,这时你可以编写一个功能测试。
对于单元测试,你会使用代码去验证结果,在功能测试中也应该这样做。以注册账号为例,你可以验证浏览器是否跳转到了"感谢注册"页面。
当有些测试你需要手动在浏览器下重复进行时,你应该编写功能测试。注意不要写得太细致了,否则维护这些测试将是一个噩梦。
最流行的功能测试工具是 Selenium。Selenium WebDriver或者Protractor通常与Selenium一起使用,有时也使用PhantomJS和CasperJS,注意你不需要使用真实浏览器。
总结
测试JavaScript代码时,应该着重于单元测试,它非常容易编写和维护,除了可以减少BUG还有很多益处。而集成测试与功能测试应该作为补充。
欢迎加入我们Fundebug的全栈BUG监控交流群: 622902485。
版权声明: 转载时请注明作者Fundebug以及本文地址: https://blog.fundebug.com/2017/06/26/javascript-test-type/
【求助】vscode调试异步代码不命中或跑偏
express+es7-async-await,用vscode本地运行调试,端点老是诡异的跑偏或者不命中,和解?太bug了吧,如何避免呢
express 静态资源出现404的话,从chrome中可以看到两次请求,
如果资源存在的情况下,就没问题,但是一出现404,就是两次请求。这是个啥情况??
<script src="XXX.js"></script>
没有 XXX.js 这个文件,但是chrome中会出现两次,请求XXX.js的记录,没搞懂!
canvas时钟特效
<!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 前后端开发贤才
坐标:深圳南山科技园 港美股互联网券商富途证券招聘 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识别二维码的插件
使用jsqrcode后,图片含有二维码无法识别,必须是单独的二维码图片才能识别。有没有可以的推荐
又来问答了,哈哈哈哈哈哈
我想通过上面的仨按钮来跳转到其他的路由底下去,这个前端的js该怎样写呢。是发送一个Ajax请求到相应的页面路由吗? 这个方法我试过了,可以response到,但是没法渲染整个页面,难道是我思路错了?
放一下其他的一些相关的东西。
(这个是本来的思路,通过Ajax来获取,但是渲染不了)
(这个是相关的路径,当前这个通过点击发起请求的是main目录底下的一个js文件。我想通过点击来获取的是admin目录底下的user目录的js文件)
好像说的有点拗口。求助呀
使用axios的一些疑问
axios把数据封装了一层, 如何去掉?
axios捕捉不到错误号大于400返回的数据,有没有什么办法?(我拿cnode社区的api, 每次返回来401这种错误, 后台返回的提示信息,catch捕捉不到)
axios的 timeout 的用处?
express如果获取ajax发送的data
$.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代码也是够乱的
https://github.com/alibaba/anyproxy
- 有没用的文件,比如certGenerator
- 无引用随处可见,比如httpsServerMgr,一般以上是无用的。。。
- 测试用koa1,开发依赖express4
- webui和cli和核心库放在一起,合体。。。
- 那测试也是极其酸爽的
剩下的你们来补充吧
为什么很少招node做后台,php java的很多
<p data-v-087651fa="">请输入内容。。。</p><p><b>为什么很少招node做后台,php java的很多</b></p><p><br></p>
百度搜索原理是什么
不可能一个值就把整个网页都遍历了吧 那数据也太大了
乘法计算的问题。有什么好的解决方法么?
> 0.1 * 0.2
0.020000000000000004
> 69.99 * 100
6998.999999999999
> 129.99 * 100
12999
node+express+mongoose一个小demo
1.clone项目
git clone https://github.com/wodb/node-express-mongoose.git
2.切换路径运行
cd ./node-express-mongoose
npm run strt
提示 :绑定的是IP,下在下来需要把config.serverURL换成自己的,也可以换成localhost。
数据库用的数mongo 连接的test库
// 开启服务器连接
mongoose.connect(config.database)
// 开启监听事件
mongoose.connection.on('connected', () => {
console.log(`成功开启服务器:${config.database}`)
})
[南昌]南昌数特网络科技有限公司 招聘Node.js后端工程师(8k-15k)
职位要求
拥有至少一年的Node.js开发经验,JavaScript 基本概念清晰,熟练掌握闭包、回调、Promise 等 能熟练使用MongoDB、mongoose、express、Nginx、varnish; 对lodash、async等有一定的了解; 熟悉Github、SVN; 能熟练使用Linux指令者优先; 代码质量要精益求精,注重代码的维护和优化,能够独立完成开发任务。
工作地点:江西省南昌市高新区紫阳大道云中城A座1501室 邮箱:coinvc@qq.com
如果你技术牛逼,可以忽略以上任意条件,薪资自己定
[春雨医生] [招聘] web 前端开发/自然语言处理/数据挖掘工程师/ 算法/服务器研发
我们技术上“有态度”,立志将产品技术和用户体验做到极致 对于中国医疗现状,我们绝对是移动健康大平台 我们一直在努力让好的产品收获应有的价值 我们也坚持在代码质量等各个层面都能做出成绩
在此 希望等到你对春雨所服务事业的价值认同,期待能得到与您当面交流的机会,为春雨的未来事业争取更多令人欣喜的血液 我希望用你所收获的专业知识和思考,帮助春雨医生获得更多的关注、俘获更多的用户、赢得应有的价值。
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 测试工具,求推荐
请各位大牛推荐NODEJS的测试工具,谢谢! 顺便问问大家是怎么测试Javascript 前端程序的?谢谢!