Duo js 一个非常酷的前端打包工具

简介:

Duo是下一个包管理生成工具,混合了当今最流行的Component,Browserify,Go等工具的功能与思想,让前端开发更加简单与方便.

本文参考duojs官网

安装

首先直接从npm安装

npm install -g duo

Duo中的require方法会直接从github上面下载代码,所以本地需要一个配置文件,mac下增加这个~/.netrc,然后插入下面内容

machine api.github.com
login <username>
password <token>

可以点击这里来创建一个github token

开始使用duo.js

下面写一个简单的js脚本,里面会请求两个模块,这个模块可以直接从本地文件系统中加载或者从远程的github上加载

var uid = require('matthewmueller/uid');
var fmt = require('yields/fmt');

var msg = fmt('Your unique ID is %s!', uid());
window.alert(msg);

matthewmueller/uid模块可以直接从github上拉下来,yields/fmt模块可以直接从github上拉下来,两个模块不需要你修改本地package配置文件.

然后利用duo来生成最终加载的js文件

duo index.js > build.js

这个过程其实是利用browserify的原理,生成的文件里包含所有依赖的文件与一个简单的模块加载功能.

最后,只需要在运行的html页面上加上一个script标签引用上面的build.js文件就可以运行起来.

css文件处理的方式跟js差不多,请求方式可以从本地或者github上拉取.

@import 'necolas/normalize.css';

body {
  color: teal;
  background: url('./background-image.jpg');
}

上面import后面的路径,duo会智能的从本地还是从github上面拉取

打包命令跟js的差不多

duo index.css > build.css

用的时候只需要在你的html头部添加一个link引用此文件就可以.

duo.js的特点

总共有下面五点:

  • javascript,css,html提供一流的支持

  • 提供一个unix-y形式的命令行接口

  • 直接从github上拉取请求资源,支持多种文件语法,比如版本号,后面还可跟当前版本里的某个文件

  • 直接源代码预编译,比如coffeescriptsass

  • 不需要增加额外的配置文件

duo.js的工具思想

duo是用来设计成一个增强应用程序构建能力的工具,至少保证下面三件事情做起来非常简单

  • 快速验证想法

  • 模块化

  • 构建大型应用

下面我们一一说下上面三点

快速验证想法

作为开发者,我们经常需要测试一个我们的某个好点子或者一个独立的bug,只是现在包管理工具最大的一个问题就是当缺少像这些文件(package.json,component.json)的时候,它们都不能使用.

duo这里移除了对这些样板配置文件的依赖,让你直接从github或者本地文件系统里去拉出,看下面的例子

var events = require('component/events');
var uid = require('matthewmueller/uid');

而且上面的模块直接从版本号,分支或者详细路径里获取

var reactive = require('component/reactive@0.14.x');
var tip = require('component/tip@master');
var shortcuts = require('yields/shortcuts@0.0.1:/index.js');

相同的功能在css里的import属性上也能用到

@import 'necolas/normalize.css';
@import 'twbs/bootstrap@v3.2.0:dist/css/bootstrap.css';

甚至可以请求一个html文件或者是一个json文件

var template = require('./menu.html');
var schema = require('./schema.json');

duo将处理内部的事情,比如把html文件转换成一个字符串,一个json文件转换成一个js对象

当你想使用上面的js,css的时候,只需要运行下面简单的命令

duo in.js > out.js duo in.css > out.css

模块化

每个包管理工具都需要一个强大的生态系统来支撑,duo支持所有已存在的Component packages,因为它本身也支持根据路径来加载,所以也支持大部分的Bower packages,未来还在计划支持Browserify packages.

duo希望弥补各个包管理工具之间的差距,提供一致的解决方案给前端开发者.

当想要创建自己的公共组件的时候,只需要在自己的github仓库里加一个component.json文件就行,像下面这样的

{
  "name": "duo-component",
  "version": "0.0.1",
  "main": "index.js",
  "dependencies": {
    "component/tip": "1.x",
    "jkroso/computed-style": "0.1.0"
  }
}

然后把这个文件提交到github上之后,其它人就可以像下面这样来使用你的组件了

var thing = require('your/duo-component');

如果你来自component社区,那么将会注意会component.json文件不需要任何scripts,styles,templates等属性,duo在内部都会处理这些细节,对于jsscss,它会自动的遍历所有的依赖树,然后打包所有的文件到最终的文件中去.跟browserify很相似.

应用程序

为了让包管理工具非常好用,得让它支持扩展,duo在这一点上做的非常好.

duo允许同时打包多个入口文件,比如想生成多个页面的入口文件,可以像下面这样

duo app/home.js app/about.js app/admin.js

还可以使用表达式

duo app/{home,about,admin}/index.{js,css}

如果duo在打包资源文件的时候发现里面引用了别的image或者font文件的时候,会自动的把这个文件copy到build文件夹中去,像下面例子

@import 'necolas/normalize.css';

body {
  background: url('./images/duo.png');
}

duo将会把duo.pngcopy到build/images/duo.png这里,所以最终部署应用程序的时候只需要提供一个build文件夹到服务器就可以了

实例

想要了解更多更完整的duo应用实例,可以从下面github仓库代码里去看看

duo社区资源

想要了解更多关于duo相关的资源,可以查看下面提供的一些链接

目录
相关文章
|
18天前
|
前端开发 JavaScript 网络协议
前端最常见的JS面试题大全
【4月更文挑战第3天】前端最常见的JS面试题大全
37 5
|
22天前
|
JavaScript 前端开发
Math对象:JavaScript中的数学工具
Math对象:JavaScript中的数学工具
27 1
|
1月前
|
JavaScript 前端开发 Java
纯前端JS实现人脸识别眨眨眼张张嘴案例
纯前端JS实现人脸识别眨眨眼张张嘴案例
47 0
|
1天前
|
Web App开发 JavaScript 前端开发
JavaScript中的性能优化:代码优化技巧与性能分析工具
【4月更文挑战第22天】本文探讨JavaScript性能优化,包括代码优化技巧和性能分析工具。建议避免全局查找、减少DOM操作、使用事件委托、优化循环和异步编程以提升代码效率。推荐使用Chrome DevTools、Lighthouse和jsPerf等工具进行性能检测和优化。持续学习和实践是提升JavaScript应用性能的关键。
|
5天前
|
JavaScript 前端开发 UED
Vue工具和生态系统: Vue.js和服务器端渲染(SSR)有关系吗?请解释。
Vue.js是一个渐进式JavaScript框架,常用于开发单页面应用,但其首屏加载较慢影响用户体验和SEO。为解决此问题,Vue.js支持服务器端渲染(SSR),在服务器预生成HTML,加快首屏速度。Vue.js的SSR可手动实现或借助如Nuxt.js的第三方库简化流程。Nuxt.js是基于Vue.js的服务器端渲染框架,整合核心库并提供额外功能,帮助构建高效的应用,改善用户体验。
7 0
|
11天前
|
JavaScript 搜索推荐 测试技术
深入了解 Vue CLI:现代化 Vue.js 项目开发工具
深入了解 Vue CLI:现代化 Vue.js 项目开发工具
|
12天前
|
前端开发 JavaScript 搜索推荐
CSS框架是前端开发中不可或缺的工具
【4月更文挑战第12天】CSS框架是前端开发中不可或缺的工具
18 2
|
21天前
|
人工智能 前端开发 JavaScript
【前端设计】HTML+CSS+JavaScript基本特性
【前端设计】HTML+CSS+JavaScript基本特性
|
28天前
|
JavaScript 前端开发 算法
深入探讨前端框架Vue.js中的虚拟DOM机制
本文将深入探讨前端框架Vue.js中的虚拟DOM机制,分析其原理、优势以及在实际开发中的应用场景,帮助读者更好地理解Vue.js框架的核心特性。
|
1月前
|
JSON JavaScript 前端开发
Node.js:前端开发的后端利器
Node.js作为一种运行在服务器端的JavaScript环境,为前端开发者打开了后端开发的大门。它以其高效的事件驱动、非阻塞I/O模型以及强大的npm生态,使得前端开发者能够轻松构建服务器端应用,实现前后端的全栈开发。本文将探讨Node.js的核心优势、应用场景以及在前端开发中的重要性。