Node.js process 模块常用属性和方法

如果不是和命令行工具打交道,可能我们很少有机会去用到process模块中的一些方法或者属性。不过如果你要做类似于webpack或者gulp等较为复杂的构建工具,由于bash界面就是和用户直接交流的工具,因此友好的输入输出,完整的提示都非常有必要了。 一张表格大概可以看到process有哪些属性 属性名称 用途 platform 判断当前系统平台 argv 当前进程的命令行参数数组 execPath 当前进程的可执行文件的绝对路径 stdout 指向标准输出 stdin 指向标准输入 stderr 指向标准错误 stderr 指向标准错误 我们可以直接在代码中这样使用 console.log(porcess.platform) // darwin 使用argv 会返回命令行的数组,我们可以通过数组来获取用户具体的命令 console.log(process.argv); // [ '/usr/local/bin/node', '/Users/ali-130257n/www/weex-jackzoo/projects/demo.js', '-p', '-v' ] 一般情况下,我们更想获取最后的一些参数,前面两个不需要,我们可以 let 详情 »

消除mac下npm全局安装使用sudo命令

可能在我们默认安装node.js的使用,npm安装到的目录大多都在/usr/local/bin 下,我们有的时候全局安装某些模块的时候,会出现类似 EACCES 或者无法创建软链 link permission下面的一些提示 npm ERR! Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json' npm ERR! { [Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'] npm ERR! errno: 3, npm ERR! code: 'EACCES', npm ERR! path: '/Users/chietala/.npm/-/all/ 详情 »

ThinkJS 中使用MongoDB的CURD操作

使用Node.js + mongodb已经成为很多公司的技术栈。ThinkJS其实也提供了对mongo的支持,虽然官方文档较少,但是保证了ORM的API的一致性,所以用起来需要查看基本的Model api 基本的模型文件放在common/model下 获取列表 getList(q, page) { return this.select(); } 分页加条件搜索 search(q, page) { if(q) { q = new RegExp(q,'i'); } return this.where({'name':{ $regex: q}}).page(page, 20).countSelect(); } 获取详情 getDetail(id) { return this.where({'_id':id}).select(); } 创建数据 addTag(tag) { return this.add(tag); } 更新数据 详情 »

查看详情

漂泊

从28日提last day到12月10日。其实说漂泊,很夸张,但是在北方这样的冬日里,看着汽车穿行的街道,会觉得漂泊这个词汇变得不那么抽象。 自己把28日前面的日子叫创业, 无论怎样的事情,无论怎样的经历,有过执着,才能放下执着。 这期间一直夹杂着很多事情,驾校考试,工作,旅游。三条线持续进行中,11月1日开始科二考试,很幸运,算是一个很好的开始。然后在周末开始准备换一份工作,期间在拉钩上投了以及在搜藏的一些职位信息。驾校完后一周开始陆续面世,第一周还比较少,确实渠道很重要。其实第一家规模并不大,其实创业市场很大,有无数个团队在做着不同的事情,自己面过的团队包括了,人事管理,餐饮,证劵,游戏数据这些。大厂也开始投了,但是大厂真心不看社会招聘的,还是内推效率快些。周三面的第一家,一上午就结束了,没有太多的等待,下午就确认offer了,周五面了M厂和A厂。表现不甚理想,所以考前准备还是非常必要的,尤其小红书和小绿书过一遍,很多题目都上面的。接下来一周开始了密集的面试,和很多人聊了创业的看法,彼此交换思想时也学到了很多。时代一定是发展的,落后的眼光支撑不了未来的。17号去日本,然后16号晚上8点完成了最后一个面试,陆续确认一些机会,那些日子,感觉出奇的高度集中,感觉interview真的是非常费脑力和体力的事情, 详情 »

【转】JavaScript Developers: Watch Your Language! Mike Pennisi

原文地址 https://bocoup.com/weblog/javascript-developers-watch-your-language?utm_source=javascriptweekly&utm_medium=email @Mike Pennisi It is 9:18 AM on August 21, 2021. You have just finished eating your space-breakfast, and you’re ready to get back to work maintaining the web presence for Omni Consumer Products. After about an hour, you find your latest 详情 »

查看详情

动物园的前前后后

快到年底了,计划中的还有一个目标,就是项目的收尾albums 。这个项目最早在2015年7月份左右启动。最初的目标只是做个简单的相册程序,用于记录自己的设计和绘画的一些图片。同时也是有技术的练手目的,主要是熟悉ThinkJS和Angular。于是乎这个项目陆陆续续会有提交,包括按照一定模块去完成功能。然而到了3月份的时候,自己把一些图片传到了Behance上去后,这个项目的意义似乎就没那么大了。随后Angular2发布,然后有想着折腾Angular2,于是放弃了部分页面开始改版。而动物园诞生则是在今年7月份,这的的确确是一个公益项目,灵感来源是Pin每次给我推送的页面确实是很多动物的😂 其实也是在逐渐开发中明白了,做产品,技术始终只是个支撑的手段,如果折腾来折腾去,离发布终会有一段路程,前端时间换到https,然后接下来分发的CDN也要切过去,结果要备案了吧。所以做产品最核心的先把最核心的功能弄出来,这才是做产品的目标。接近年底,这个项目陆陆续续开始收尾了,包括对于细节的修改,完善一些链接,包括尽快发布一个管理后端的测试版本,交给 编辑。 其实年底上线的计划,是没有包含“识趣”模块的,这个模块得放到明年,包括明年还会陆陆续续上些小功能和管理端的功能。 如果你对这个项目有兴趣,你可以去这里 了解一些信息,也可以关注我们的官方微博@杰克动物园 详情 »

一张图帮助你消化VUE2.0的源码

VUE2.0已经正式发布一段时间了,而且很多公司活着组织都开始迁移到VUE2.0中去了。相对VUE1.x这次升级和变化是巨大的,包括体积更小了,更好的性能表现,支持服务端渲染等。勾三股四放出了Github项目的源码分析导航,如果有兴趣研究的可以透过一张图去理解作者的思路. 点击查看大图 详情 »

查看详情

使用React 制作一个简单的加载动画组件

最近项目开发时候遇到这样的情况就毫不客气的介入了加载条的开发计划中来。 Github 项目地址 演示效果 定义需求 加载条说简单的需求来说就是: 加载动画 + 文案 + 层级位置 如果理解需求了的话,开发就相对轻松了。自己能够用到的的场景大致有弹框提交,页面加载数据,按钮禁用提交这些。 自己设计的一般结构如下 <div className="react-loading-spinner" > <div className="loading-inner"> {loading} . // loading animation element <div className="alert-text">{this.props.text}</div> </div> </div> 由于JSX的方便性,我们可以定义行内的直接返回loading中的东西。同样也可以作为children存放自定义的元素放进去,比如你喜欢使用svg或者css动画等。 详情 »

查看详情

有趣的话题,为什么jsx用className而不是class

其实官方粗暴的回答就是 jsx是JS而不是什么HTML。 当然react的核心团队回答了在quora上回答了这个问题。 直白翻译下: 其实我们对于这个问题也纠结过,我们这里需要有一个转换,把this.props.class 转换成this.props['class'] ,这样你就可以非常方便使用这些class名称。Babel可以完成。但是我们坚持使用className的是下面一些理由: 首先我们尽可能的使用html DOM对象的属性(就像el.className ), 与设置标签属性(attribute)相反。 标签属性始终都是字符串类型,而 对象属性可是任意数据类型,这样的话,算是一种弹性扩展。 其中一个例子就像,classList 属性,相对className而言其实它更适合于数据模型,React现在虽然不支持classList,但是将来计划这么做,采用className更多的是和html属性相仿,更能够说得通。 另外一个理由主要是对于未来的考虑,在未来,React或许会使用对象解构去进行属性的赋值,react-future 展示了一个例子。即使更加现代化的浏览器中,这个也对class并不会生效,也不会像标签中的属性名一样出现。 第三,我们认为 JSX主要的优势是通过匹配闭合标签来让代码更加易于阅读,而不是去替代 html或者xml.虽然非常容易粘贴/复制html代码,但是稍许不同的是(完整闭合的标签)让它稍逊一筹,所以我们有程序去进行html to jsx的转换。 详情 »

React.createClass vs ES6继承React.Component的差异

现在越来越多的开发者都已经大量接触ES6,而Facebook在React版本 v0.13.0支持了ES6 class写法。(所以这篇文章主要用于之前接触,然后断了一阵子,再接触的话,可以看下一些改变吧) 最早的时候我们使用React.createClass来进行组建的构建. import React from 'react'; const Contacts = React.createClass({ render() { return ( <div></div> ); } }); export default Contacts; 现在我们可以用ES6中的继承extend来写 import React from 'react'; class Contacts extends React.Component { constructor(props) { super(props); } render() { return ( <div></div> ); } } export default Contacts; 详情 »