目前项目使用 ES5及UMD 规范封装,所以在前端暂时只支持<script>标签的引入方式,未来会逐步用 ES6 进行重构
演示地址:paginationGithub:csdwheels不要吝啬你的Star哦~(〃'▽'〃)
两种写法是等效的,只不过前者让代码看起来更像是一个整体。可以看到,这两种写法的作用其实就是在()内定义函数,然后又使用()来执行该函数,因此它就是自执行的。
这里的extend函数为浅拷贝,因为插件的用户参数一般是不会修改的,如果想实现深拷贝可参考jQuery中extend的实现方法。第四点我们插件暂时不需要这样的功能,可以暂时不支持它。第五点在代码中我们会通过回调函数去逐步实现它。
有人说计算机的本质就是对现实世界的抽象,而编程则是对这个抽象世界规则的制定。正如上面这句话所说,在实际编码之前我们一般需要对要实现的需求效果进行一个思路的分析,最后再进一步把这个思路过程抽象为有逻辑的代码。我们先看一下要实现的分页效果是什么样的,我把它分成两种情况,显示和不显示省略号的,首先来看第一种:
样式如果觉得不满意可自行调整然后将HTML结构插入文档中:
在两种基础模式之上,还可以开启Hash模式那么,整个分页器插件的封装到这里就全部讲解完毕了,怎么样,是不是觉得还挺简单?偷偷告诉你,接下来我们会逐渐尝试点更有难度的插件哦!敬请期待~~
平心而论,整体的代码质量虽然一般,但是逻辑和结构我觉得还是写得算比较清晰的吧。代码的不足之处肯定还有很多,也希望各位看官多多指教!更新(2018-7-29)ES6-环境配置2015年,ECMAScript正式发布了它的新版本——ECMAScript6,对JavaScript语言本身来说,这是一次彻彻底底的升级。
npm i babel-cli babel-preset-env babel-core babel-loader babel-plugin-transform-runtime babel-polyfill babel-runtime -D安装完成后,我们就可以手动使用命令编译某个目录下的js文件,并输出它们了。
围观群众:我知道了!你是想说Gulp对吧?!
喂,醒醒!大清亡了!在前端框架以及工程化大行其道的今天,想必大家对Webpack、Gulp等工具并不会感到陌生,配合它们我们可以轻松实现一个大型前端应用的构建、打包、发布的流程。不过现在是2018年了,三大框架三足鼎立,而Gulp已经稍显老态,作为它的晚辈,一个名叫Webpack的少年正在逐渐崛起。这位少年,相信大家在使用Vue、React的过程中已经或多或少接触过它了。简而言之,它和Gulp在项目中的角色是一样的,只不过配置更为简单,构建更为高效,下面就让我们来看看Webpack是怎么使用的吧。
如果你还没有接触过Webpack,那可以参考官方文档,先对Webpack有一个大致的认识,我们这里不作过多介绍,只讲解它的安装与配置。As usual,我们需要安装它:
npm i webpack webpack-cli webpack-dev-server -D使用它也非常简单,只需要建立一个名叫webpack.config.js的配置文件即可:
npm i clean-webpack-plugin uglifyjs-webpack-plugin css-loader style-loader node-sass sass-loader要在配置中让babel失效,还需要建立一个.babelrc文件,并在其中指定编码规则:
不是说好不用Gulp的呢?嘛。。针对ES5的打包工作来说Gulp还是挺好用的,真香警告!ES6开发所需要的环境终于配置完成,接下来就让我们开始代码的重构吧!
如果你想要入门ES6,强烈推荐阮一峰老师的教程
相关的新语法和特性较多,不过要我们的项目要重构为ES6暂时还用不了多少比较高级的特性,你只需要着重看完Class部分即可。ES6引入的新特性中,最重要的一个就是Class了。有了它,我们不需要再像以前那样用构造函数去模拟面向对象的写法,因为它是JavaScript原生支持的一种面向对象的语法糖,虽然底层仍然是原型链,不过至少写出来的代码看上去像是那么一回事了。
利用内置的Object.assign()方法,可以直接替换掉我们实现的extend函数,功能可以说完全一样,而且更为强大有了新的模板,我们就能直接开始插件代码的重构了,这里只贴上变动比较大的几个地方,其余部分可参考源码
npm i babel-preset-stage-0 -D安装后,在.babelrc文件中添加它即可:
npm login
npm publish要使用发布后的插件,只需要安装这个npm包,并import对应的插件:
npm i csdwheels -Dimport { Pagination } from 'csdwheels';复制代码到止为止,我们第一个轮子的开发就算真正结束了,所有源码已同步更新到github,如果大家发现有bug或其他问题,可以回复在这个项目的issue中,咱们后会有期!(挖坑不填,逃。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |