作为一名前端码农啊,曾经无数次执行npm install,看着拉不到底的node_modules,感叹npm社区生态的繁荣。一门技术的兴起,离不开一个良好的包管理工具,和无数个具有奉献精神的个人开发者和组织开发者。npm作为Node.js的包管理工具,承载了Node社区的生态繁荣之责。目前开源在npm上的包有百万个之多,生态之繁荣足以和maven做对比。 Node作为一种服务端语言,极大地扩展了前端开发的边界,使每一位前端开发者在code客户端的同时,借助node所提供的能力,参与到前端项目的架构、打包、构建以及工程化的整个过程,同时也能积极参与到服务端开发的过程中。由于Node独特的事件循环处理模式,非阻塞I/O的特点,使得Node在做服务端语言的过程中有独特的优势。目前社区比较成熟的web开发框架Express、Koa,还有阿里开源的企业级框架Egg,都在社区获得了极大地成功,也有很多的成功经验可以参考。
作为一名npm社区的受益者,享受了社区繁荣的便利,也一直想着向社区贡献一些自己的想法。先聊下三个想法哈:
- 非覆盖式发布。先说下背景,目前我们小团队的单页面应用,静态资源部署的过程中,一般直接将静态资源拖到虚机上, 这种属于覆盖式发布,会有什么问题呢?如下
所以最好的方式是什么呢,先全量部署静态资源,最后替换首页HTML文件。对于一个企业级应用,像前端这种静态资源,多半会选择上CDN,静态资源还肯能会挂靠在在阿里云的OSS或者华为云的OBS上,也需要这种场景。
- 基于Vuex的简易方法
状态管理工具都有一个共同的特点,使用起来方便,定义起来麻烦。类比于Redux,vuex使用起来也需要定义繁杂的action,reducer。该npm包封装了一系列简易使用vuex的方法,赋予vuex更加友好便利的使用体验,我给他命名为haapy-vuex。
- 全局modal的点击关闭 有这样一种场景,这个位置提示出来modal,但是点击页面其他非modal位置时关闭。我个人会常用这样一种实现,就是给body上添加一个点击时间,同时在modal上阻止点击事件的冒泡。此时全局一旦接收到点击事件,关闭modal即可。 我的想法是在页面渲染完成后,注册一个全局的订阅数组,每当modal被打开后,将关闭事件添加到订阅数组,一旦有全局的点击事件,则将订阅数组内的所有方法都执行一遍,页面关闭后,将订阅事件推出订阅数组。利用发布订阅的设计模式,实现支持多个modal的关闭事件。
如上三种想法已经实现两个啦,地址分别是
第三个敬请期待~~~