关将至,JavaScript 开发者问卷调查也已经结束了。本次调查收到了超出我想象的回复,我也很高兴与你们分享调查结果。
截至目前,有超过 5000 人参与了问卷调查,准确的说是 5350 人,我真的迫不及待想与大家分享详细这次调查的细节。分享之前先感谢参与调查的每一个人。这是一个 JavaScript 社区的伟大时刻,我真的对未来的事情感到无比激动。
我没有想到大家这么积极,下次我一定会对表单做一些改进。下次我会先将调查问卷放在 GitHub 上,这样在调查开始前,社区有一两个星期的时间来收集问题和选项。这样,我就可以得到更准确地结果,也可以避免出现“你竟然没有包含Emacs!”这样的抱怨。
现在,基于调查结果。我将保持中立的给大家分析结果,这样大家就可以得出自己的无偏见结论。
1、你写什么类型的 JavaScript?
有高达 97.4% 的受访者用 JavaScript 写 web 浏览器端程序,其中有 37% 写移动端 Web 应用。超过 3000 人(56.6%)也使用 JavaScript 写服务端。在这些参与调查的人中间,有 5.5% 的人还在一些嵌入式环境中使用 JavaScript,例如 Tessel 或 Raspberry Pi(树莓派)。
少数受访者反馈他们还在其他地方使用了 JavaScript,主要有 CLI 和桌面应用的开发。还有少数提到了 Pebble 和 Apple TV。这些都归类在其他选项中,占总票数的 2.2%。
2、你在哪使用 JavaScript?
不出所料,94.9% 的投票者在工作中使用 JavaScript。但是,也有 82.3% 的投票者在其他项目中使用。其他回复包括教学,好玩,和非盈利目的使用。
3、你写 JavaScript 多长时间了?
超过 33% 的受访者有超过 6 年 JavaScript 代码的编程经验。除了这些,还有 5.2% 的人 1 年前开始写JavaScript,12.4% 的人是 2 年前,15.1% 的人是 3 年前。这说明在 5350 个投票者中有 32.7% 的人是近几年才开始写 JavaScript 的。
4、如果可以的话,你会使用以下哪种 compile-to-JavaScript 语言?
有高达 85% 的受访者表示他们将使用 ES6 编译成 ES5。同时依然有 15% 的人用 CoffeeScript,15.2% 的人用 TypeScript,只有区区 1.1% 的人在使用 Dart。
这是我想进一步探讨的问题之一,因为有 13% 的人选择了“其他”。选择其他的绝大部分答案是 ClojureScript,eml,Flow,和 JSX。
5、你会选择以下哪种 JavaScript 编程风格?
绝大多数(79.9%)的 JavaScript 开发者在这个问题上选择分号。相反,11% 的开发者选择不使用分号。逗号方面,44.9% 的开发者选择将逗号放在表达式末尾,然而有 4.9% 的开发者喜欢先写逗号。缩进方面,65.5% 的开发者喜欢空格,另外 29.1% 的则更喜欢制表符。
6、你使用以下哪些 ES5 特性?
79.2% 的受访者都使用过数组功能函数,76.3% 的开发者使用严格模式,30% 的开发者选择了 Object.creat,而仅有 28% 的开发者选择 getters 和 setters。
7、你使用以下哪些 ES6 特性?
值得指出的是,投票表明箭头函数是使用最多的 ES6 特性,有 79.6%。Let 和 const 加一起一起有77.8% 的得票率,promises 也有 74.4% 的开发者选择。不出所料,仅有 4% 的参与者使用过 proxies。仅有 13.1% 的用户表示他们使用 symbols,同时有超过 30% 的人使用 iterators。
8、你写测试吗?
有 21.7% 的开发者从不写任何测试,大部分人偶尔写测试,34.8% 的人经常写测试。
9、你运行持续集成测试吗?
与 CI 类似,许多人不使用 CI 服务器(超过40%)。但 60% 的受访者有时候会使用 CI,有 32% 的人在 CI 服务器上跑测试。
10、你怎么测试?
59% 的人喜欢使用 PhantomJS 或类似工具运行自动化浏览器测试,51.3% 的人还在 Web 浏览器上手动测试。有 53.6% 的人会在服务端进行自动化测试。
11、你使用过以下哪个单元测试库?
似乎大部分投票者选择的不是 Mocha 就是 Jasmine 来运行 JavaScript 测试用例,Tape 有 9.8% 的投票。
12、你使用过以下哪个代码质量检测工具?
似乎受访者在这个问题上被分为 ESLint 派和 JSHint 派,但是 JSLint 还有几乎 30% 的人支持,这么多年依然坚挺很是令人惊奇。
13、你是如何处理客户端依赖问题?
npm 接管了客户端依赖管理系统的天下,60% 的支持率就是证据。Bower 依然有 20% 的观众,而普通的老式 下载和插入则获得了 13.7% 的选票。
14、你首选的脚本构建方案是什么?
构建工具的选择很分散,部分原因应该是我们有太多选择。Gulp 最流行,有超过 40% 的选票。紧接着是 27.8% 的 npm run,Grunt 有 18.5% 的支持者。
15、你首选的 JavaScript 模块加载工具是什么?
目前,似乎大部分开发者都在 Browserify 和 Webpack 之间徘徊,而后者高出 7 个百分点。29% 的用户表示他们在选择前面两个提到的工具打包模块之前,会先使用 Babel。
16、你使用以下哪些库?
现在回想起来,这是个得益于协同编辑的问题之一。jQuery 得到了超过 50% 的支持,表现依然强势。Lodash 与 Underscore 在参与投票的 JavaScript 使用者中也占据显著地位,XHR 微型库仅获得了 8% 的票数。
17、你使用以下哪些框架?
React 和 Angular 的遥遥领先并不令人奇怪。有 22.8% 得票的 Backbone 依然处于安全位置。
18、你使用 ES6 吗。。。
这个问题的答案比较分散,有近 20% 的人几乎从不使用 ES6,超过 10% 的人只写 ES6,近 30% 的人广泛使用,近 40% 的人经常使用。
19、你知道 ES2016 会有什么特性吗?
大致说来,有一半的投票者不知道 ES2016 将会有什么特性,另外一半对新特性有所了解。
20、你了解 ES6 吗?
超过 60% 的受访者了解基本的概念,10% 的人完全不了解 ES6,有超过 25% 的人认为他们对 ES6 非常了解。
21、你认为 ES6 是一个进步吗?
几乎有 95% 的受访者认为 ES6 是 JavaScript 的一个进步。下次碰到 TC39 的会员我得祝贺他们!
22、你首选的编辑器是什么?
又一次,因为选择太多导致答案很分散。超过一半的受访者喜欢 Sublime Text,超过 30% 的人喜欢用 Atom 和它的开源克隆版。超过 25% 的票投给了 WebStorm,vi/vim 也有超过 25% 的得票率。
23、你首选的开发操作系统是什么?
Mac 有超过 60% 的投票者使用,Linux 和 Windows 的用户都接近 20%。
24、你如何搜索可重用代码,库和工具?
受访者最喜欢 Github 和搜索引擎,但通过博客,Twitter 和 npm 网站搜索也占了很大一部分。
25、你参加 JavaScript 社会活动吗?
有近 60% 的人至少参加过一次会议,74% 的人表示他们喜欢参加聚会。
26、你的 JavaScript 应用支持哪些浏览器?
相当分散的答案,但还好大部分受访者不再考虑 IE6 的使用者了。
27、你会定期了解 JavaScript 的最新特性吗?
有大概 80% 的受访者会实时了解最新的 JavaScript 特性。
28、你在哪了解最新的 JavaScript 特性?
不出所料,Mozilla 开发者网络在文档和新闻方面处于领先地位。JavaScript 周刊也是一个非常受欢迎的新闻和文章的直接来源,有超过 40% 的支持率。
29、你听说过以下哪些特性?
超过 85% 的投票者听说过 ServiceWorker,但我很想知道这些人有没有使用它!
30、除了 JavaScript,你还主要使用哪些语言?
有太多的语言可供选择,我肯定会漏那么几个,但结果不言自明。
谢谢!
最后,感谢每一位参与这次调查的人。本次问卷调查受到了超出我预期的欢迎,期待明年再进行一次类似的调查。我希望,那会是一个更多样性,也许再少一点偏见的调查。
这次问卷调查你获得了什么?
、码云代码托管
我们开发一个项目需要一个代码托管平台,这里选择码云。
1)注册登录
2)在码云上新建项目
3)安装git
4)克隆到本地
git clone 仓库地址
5)搭建项目环境
6)将代码上传到gitee.com的仓库中
git add .
git commit -m '备注文本'
git push (需要输入您的帐号(邮箱号)和密码)
在码云上建好仓库后,会出现如下的一个界面:
点击复制后在本地的文件夹中用上面的git命令建一个本地仓库,然后再码云上按照提示生成秘钥,用于连接本地仓库,上传项目代码到码云上课参考第六步的命令,下面说在仓库中搭建项目环境。
二、搭建vue项目环境
1)安装node.js是必须的,一般node都自带npm
2)使用npm全局安装webpack:npm i webpack -g
3)安装vue-cli脚手架 npm i vue-cli -g(安装完后,可以用vue -V检测是否安装成功)
以上步骤由于是全局安装,可以在同一台电脑上安装一次即可。
4)创建项目文件夹。vue init webpack 项目名称,然后会出现一些选择项,可根据自己的需要进行选择。
5)cd进入文件夹,安装依赖包:npm i
6)安装完成后启动项目:npm run dev
7)在浏览器的地址栏中输入localhost:8080,查看是否启动成功。
三、在webstorm中创建.vue的代码模板
如果使用别的IDE可以上网查找一下创建模板方法,在webstorm中:File->settings->editor->File Code and Templates->新建(name为vue,extension为vue),输入以下内容:
<template>
</template>
<script type="text/ecmascript-6">
export default {
}
</script>
<style lang="stylus" rel="text/stylus" scoped>
</style>
四、整理项目下的文件夹
项目几乎所有的工作实在src文件夹中完成的的,所以先整理src文件夹中的文件。
src:工作目录
assets:放资源文件处(一般放css/js/styl/img等)
components:所有的组件放在该文件夹下,除了App.vue(顶层组件)
router:配置路由处
App.vue:项目的入口文件,也是router出口处
main.js:全局配置
1)assets和components下的原有文件删除,在components文件夹下创建一个home文件夹表示根网页,然后在它下面创建home.vue会自动生成我们前面创建的模板。
<template>
<div class="home">
home
</div>
</template>
<script type="text/ecmascript-6">
export default {}
</script>
<style lang="stylus" rel="text/stylus" scoped>
</style>
2)修改routes下的index.js文件内容。由于刚才我们删除了assets和components下的原有文件,所以在index.js中将路径和名称修改正确。
import Vue from 'vue' import Router from 'vue-router' import Home from '@/components/home/home' Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'Home', component: Home } ] })
3)修改App.vue文件
<template> <div id="app"> <router-view/> </div> </template> <script> export default { name: 'App' } </script> <style lang="stylus" rel="text/stylus" scoped> #app { } </style>
4)由于文件中的css打算用stylus去写,所以先安装stylus
cnpm i stylus stylus-loader -S
安装完后,重启项目。
五、引入需要的全局文件reset.css、fastclick.js以及项目中需要的小图标
在网上或者自己写一个css样式初始化文件,然后放在assets->css目录下,由于全局配置在main.js文件中,所以再在main.js中引入:import './assets/css/reset.css'。
移动设备上的浏览器默认会在用户点击屏幕大约延迟300毫秒后才会触发点击事件,这是为了检查用户是否在做双击。为了能够立即响应用户的点击事件,才有了FastClick。
安装:npm i fastclick -S
安装完成后在main.js中引入:
import FastClick from 'fastclick'
// 使用
FastClick.attach(document.body);
引入项目中需要用到的小图标:
在阿里巴巴矢量图标库中搜索自己需要的小图标,然后添加到购物车中,最后将购物车中的所有图标下载到本地,供项目调用。将下载好的图标文件放到如下的文件中:
然后再main.js中引入:import './assets/css/iconfont.css'。
六、分析项目结构创建基本组件
在分析完成项目的基本结构后,开始一一创建组件。
1、创建header组件
在Home.vue中引入并使用Header组件:
import HomeHeader from './pages/Header' components:{ HomeHeader } <home-header/>
接下来写header部分的结构和样式:
在移动端的开发中用的一般是相对的一个值rem,所以在写样式和结构之前,先在reset.css中写一个初始的全局font-size:50px;
样式中的scoped不能忽略,它表示这是一个局部样式,只作用于当前的css。header部分一般为44px。Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。谁的flex为1就表示谁是弹性的。
2、创建swiper组件
1) 在home目录下的pages目录下新建swiper.vue,然后在Home.vue中引入swiper.vue组件。
2)项目中的轮播效果我们用插件来写:
进入http://github.com搜索vue-swiper
安装swiper模块:npm install vue-awesome-swiper --save
在main.js中全局引入:
import VueAwesomeSwiper from 'vue-awesome-swiper' // require styles import 'swiper/dist/css/swiper.css' Vue.use(VueAwesomeSwiper);
复制swiper结构HTML:
<swiper :options="swiperOption">
<swiper-slide>I'm Slide 1</swiper-slide>
<swiper-slide>I'm Slide 2</swiper-slide>
<swiper-slide>I'm Slide 3</swiper-slide>
<swiper-slide>I'm Slide 4</swiper-slide>
<swiper-slide>I'm Slide 5</swiper-slide>
<swiper-slide>I'm Slide 6</swiper-slide>
<swiper-slide>I'm Slide 7</swiper-slide>
<div class="swiper-pagination" slot="pagination"></div>
</swiper>
swiper的逻辑处理:
data(){ return{ swiperOption:{ pagination: { el: '.swiper-pagination' }, loop:true, autoplay: { delay: 3000, stopOnLastSlide: false, disableOnInteraction: false } }
c. 样式:
<style lang="stylus" rel="text/stylus" scoped> .swiper height: 0 background-color: #ccc padding-bottom: 26.666% img width: 100% height: 100% >>> .swiper-pagination-bullet width: 6px height: 6px background-color: #fff opacity: 0.2 >>> .swiper-pagination-bullet-active /* 样式穿透 */ opacity: 1 background: #e4e7ea </style>
d.由于HTML中的数据需要动态渲染,所以需要将html改写,数据mock:
Vue 的开发利用了 NodeJS 的便利性,通过 npm 可以获取很多第三方的代码,同时,npm 也是开发时的命令工具入口。
注:以后将 NodeJS 均称作 node
安装 node
去搜索 nodejs ,然后下载系统版本对应的安装包,然后安装。
npm 基本用法
npm 即 node Package Manager,其实这是一个 javascript 包的管理工具,并不限用 node 的包。
在 node 安装成功后,会自动安装上 npm ,此时的 npm 可能不是最新的版本,你可以通过命令来安装最新的 npm
npm i npm@latest -g
常用命令如下:
npm init <project>
创建一个名为 project 的 node 项目
npm install <package>[@<version>] [--save|--save-dev]
向当前项目安装包 package;install 表示安装命令,可以缩写成 i ;@<version> 是要安装的版本号,留空表示安装最新版本;--save 是指要安装的包记录写入 package.json 文件中的依赖节点(dependencies);--save-dev 功能同 --save,但会将记录写入开发依赖节点(devDependencies),表示此包是开发时使用的,并不是产品上使用的。平时在安装包时,若没有特别需要,只需要 npm i <package> 就可以了
npm run <command> 执行 package.json 中 scripts 节点下的命令。在使用 Vue 的时候,会常常用到 npm run dev 或 npm run serve
当然,也可以使用 yarn 作为包管理工具(这也是 Vue 官方推荐的工具),其用法此处略过
Vue cli 是 Vue 官方提供的一整套脚手架,用于创建和管理 Vue 项目。通过以下命令来安装
npm i @vue/cli -g
安装后,可以通过以下命令测试安装结果
vue --version
此时应该会显示当前的 vue cli 版本号。
本质上,Vue 并不挑开发工具,即使是轻量如 nodepad++ 也能胜任。但是,使用 IDE 能得到极大的便利,包括静态错误检查以及智能提示。、
WebStorm 本应该是首选的 IDE,不过是收费的,而且安装包也很大,相比之下 VS Code 就更加平民化了。
好吧,去搜索 vs code ,然后安装吧。安装好后,还需要安装 Vetur 插件以支持 Vue 语法,以及 ESLint 插件,以支持静态检查。
代码格式化快捷键: Shift+Alt+F ,后面会用到的
Vue 提供了浏览器上的开发插件,用于审查 Vue 的组件,数据,事件以及性能等。
目前此插件支持 Chrome, Firefox, Electron.
本节完
*请认真填写需求信息,我们会在24小时内与您取得联系。