javascript的一些问题

版本问题 这里说的javascript版本问题不是指浏览器兼容性。其实对于开发来说,有了babel的话,根本不需要担心版本问题,我一样可以用最新的语法特性。 但是问题是,每一次javascript的版本升级,不像是真正意义上的版本升级。诚然,每个版本都在解决一部分问题,但是各个升级后的版本看起来更像是一个新的方言。光导入就有AMD、commonjs和es6 import。平常用的时候可能感觉没啥问题,我能用es6的地方都是用import的,但是有些地方使用import是不能解决问题的,你需要使用require。比如在webpack使用react引入图片的问题,你只能使用require,而不能使用import!!! <Image src={require('../img/xxx.jpg')} /> 当时各种场景都试过了,根本没有思考要使用require去做这件事,结果试了一天都没把一个破图片搞出来。。。最后换了require试了一下居然出来了。。。后来认为应该跟webpack的加载方式有关系,尽管babel是会把import翻译成require的,但是webpack是把图片hash过的,这里需要一层mapping吧。总之,看前端项目的时候,就是import中混合了零星的require。 javascript给开发人员带来了无限的想象 此前,没有任何一款语言能像javascript一样,像瘟疫一样在世界各个角度,横向纵向的传播。从最早活跃在浏览器内部的js,到后台依托v8的nodejs,在到后来的桌面应用,甚至翻译成lua之后可以跑在嵌入式系统。一部分人极力推崇javascript是多么多么强大的语言,一部分人承认javascript是有问题的,并认为迭代开发升级是解决之道,另一部分人认为js。。。我就是最后一部分人,这语言坑太多了。真正能够掌握这门语言得记住多少pattern啊。 github统计贡献代码量js常年排第一,为啥啊?还不是因为这语言问题太多。前端发展到现在还是围绕着html、css和js,到现在前端也没有一个说的出来的最佳实践。每一个新框架、库仅仅是尝试解决某一个问题,要想真正构建一个生产级别的环境,就是把各个解决单一任务的第三方依赖组织到一起。看起来这是一个一劳永逸的事情,但是这件事从来没有停止发展过。。。几乎每两个月就会有新的解决方案替代旧的解决方案。 这不,最近facebook看不下去npm了,就自己搞了yarn。但是你确定yarn就足够好嘛。。。明天google会不会出个啥幺蛾子。。。不过版本管理这种东西让facebook这种公司维护,确实要比某某社区要好。 最近在开发一个chrome extension,开发google的东西,还是用angular更合适。由于当时像用material ui,就用了angular material。这真是一个失败的决定。。。这个库跟react下的material-ui简直没法比。从文档组织到具体实现。当我开发一个功能时,需要光标自动聚焦到输入框中,结果内置的directive居然不支持。这个issue被好多人讨论。解决官方宣称现在要开发angular material 2,所以决定“close this issue”。怪angular 2咯?

October 21, 2016 · 1 min · magicalne

Develop with reactjs -- part 0

入坑 组里躺着一个裸体的规则引擎,已经一年多了,木有UI,程序员用起来都费劲的那种…年前用nodejs写了一个CMD工具去CRUD规则,然并卵。一个多月前感觉已经有必要开发一套UI了,否则项目无法推动,新增修改规则全靠我人力搬运,实在手累,然后就有了这篇文章… 技术选型 这个前端项目很明显,就是那种“一个人的项目”。一开始就想好了,既然一个人的项目,那一定要写的爽!技术必须用最新的。然而毕竟是前端项目,虽然对外号称本人是准全栈工程师,然而前端这种博大精深的东西怎么是我这中渣渣掌握的了得…特别是我这种懒人,不想写HTML和CSS:( 选型的时候,前端框架基本没跑——reactjs无疑,好奇好久了,终于可以一探究竟了!可是webpack好难学,不会。不会webpack,就不会自己搭项目框架,不会搭框架,就没法写代码…不过好在github上已经有很多boilerplate了。这里我使用了mxstbr/react-boilerplate 这里不得不说一下,作者是来自于“offline-first foundation”,听名字也懂得~但是由于我的项目不需要offline,所以这个东西对于我来说是累赘,而且还引起了一个bug,这个bug是在我用react-router,实现不跳转刷新页面时出现的,除非使用强制刷新,否则子页面是无法刷新出来的,希望是我使用不当吧,反正我是把offline删掉了。 框架中使用了redux来替代flux,所以redux也没跑了。虽然当时还不懂啥是redux… 使用webpack作为打包工具。 不喜欢写前端的最大原因就是不想学习CSS的实现机制…也不喜欢写CSS。但是对material ui很是喜欢…自己肯定没能力写出那么漂亮的组件。So,随便在网上搜了搜,我的天,material ui实现的现成框架不要太多。想想我也就是半年没写前端,竟然出了那么多东西…于是我就挑选了一套实现material ui的react component——material-ui。可以先说结论,值得使用,99%的体验都很棒,但是框架自己也有很多bug,看你怎么取舍了,大都不那么致命,也都有hack的办法。比较恶心的是,文档过于先进,代码没实现的功能在文档中是实现了的…严重怀疑写文档的和写代码是不是一批人…当时我用的时候还是v0.14.X,没俩月就出v0.15了。更新还是很快的。 由于项目中需要写代码,所以需要一个编辑器,那就必须要使用大名鼎鼎的Ace!真的很强大!本身由于Ace不是react component,如果直接使用还要自己写wrapper,像我这么懒的人怎么可能会写wrapper呢…而且我也不会写啊…于是,我又在github上找到了react-ace,算是ace的功能子集吧,但是已经够我的项目用了。使用过程中由于我没有仔细阅读文档,进而写出了一个bug,以为是react-ace的bug,然后去社区提问,结果没多久就有热心人指出了我的使用问题。社区还是很活跃的,值得信赖。 So,大体上就是这样的,技术栈:reactjs,redux,webpack,material-ui,ace。其中还使用了es6,所以还涉及babel。后面再说~

June 1, 2016 · 1 min · magicalne