说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

基于ES6,使用React、Webpack、Babel构建模块化JavaScript应用

HTML文档下载 WORD文档下载 PDF文档下载
如何基于ES6,使用React构建一个新JavaScript应用?如何将ES6代码发布到NPM上?又如何在后续项目中使用这些代码?……本文通过具体的编程实践,一一揭晓。

【编者按】本文为《Building modular javascript applications in ES6 with React, Webpack and Babel》的简译内容,讲述了作者基于ES6,使用React、Webpack、Babel构建模块化JavaScript应用的编程心得。

如果你想用React构建一个新的JavaScript应用,而且你还想实践ES6语法中的新特性,此外,你甚至想创建一些可重用组件并发布到NPM上,那么你究竟应该怎样实现这些需求?你如何将ES6代码发布到NPM,又如何在后续的项目中使用这些代码?我花了一些时间解决上面这些问题,现在我愿意与你们分享我习得的新知识。

如果你真的不希望阅读所有的细节,只想看看代码最终的效果——可以直接阅读最后一部分。

需求

我们先来搞清楚我们到底想要得到什么,应该如何去实现。

我们的主要目标是:基于ES6,使用我们自定义的React组件创建一个React应用。其中最棘手的部分是自定义React组件。以下是实现这些目标的需求列表:

  1. 自定义组件应该使用ES6编写;
  2. 自定义组件应该完全自给自足(使用方法足够简单:安装,导入,渲染);
  3. 自定义组件应该提供自身所需的样式(参考第2条,自给自足);
  4. 自定义组件应该通过NPM安装(因为bower有很多问题);
  5. 最后——所有自定义组件应该有单元测试和代码覆盖率报告;
  6. 加分项——自定义组件不应该相互依赖,但是应该能够相互影响。

此外,我们需要一些很棒的调试工具,例如:代码检查、源码映射(因为代码需要编译,所以这是调试的必要工具)。

处理需求

现在我们已了解所有需求,可以开始寻找满足这些需求的方法。所以,首先需要选定我们将使用的工具集和相关库。

编译

我们要基于ES6开发应用,目前的浏览器暂不完全支持所有新语法特性,所以我们需要将ES6编译为ES5。同时我们希望通过NPM管理自定义组件,需要选用一个兼容CommonJS的工具集。

目前有两种流行的可用选择——Browserify和Webpack。二者都满足我们的大部分需求,考虑到我们的项目需要使用样式文件,而Webpack对非JavaScript文件(例如:样式文件、图片、字体文件)非常友好,所以最终我们将选用Webpack。

Webpack已经能够满足大部分需求,我们将在此基础上加入Gulp.js,帮助我们完成更多任务(例如:单元测试、代码覆盖率检测、静态资源伺服)。

使用ES6

现在我们已经知道如何使用Webpack和Gulp.js来构建代码,可是如何才能满足我们的第一个需求——使用ES6?我们可以使用转译器,帮助我们将ES6代码转译为主流浏览器支持的ES5代码。目前流行的转译器有:Traceur、Babel.js、TypeScript(勉强算是),我们将选用Babel.js,它有一个更好的生态系统(插件、扩展等)。如果你尚不知晓其为何物,请记住这是一个非常棒的项目,我推荐你阅读它们的文档。最棒的是,Babel.js不仅支持ES6语法,它还可以编译JSX,所以我们可以在编译步骤彻底弃用标准React JSX编译器了!

如果你只想使用Babel.js,我推荐你阅读它们的使用文档。Axel Rauschmayer博士曾经撰写《教你使用Babel.js》一文,也值得一读,如果你对JavaScript感兴趣,我也极力推荐订阅他的博客。

自给自足

现在我们选定了ES6转译器,让我们讨论一下自给自足的问题。如果我们开发纯React组件——那么可以轻松地让它们独立工作(可重用),你甚至可以参考官方指南学习编码方式。但如果我们需要在组件内提供默认的自身样式,需要怎样实现呢?

当然,我们可以选择“纯JS”方法向我们的JSX文件加入内联样式,就像这样:

const render = function() {  const defaultStyle = {    color: 'red',  };    return (    <div style={defaultStyle}>      I have inline styles    </div>  );};

JSX内联样式

这个方法存在一个问题,我们几乎无法通过父应用控制这个组件的样式。而且,如果我们需要加载图片或自定义字体文件,这个方法就会失效。所以,是否有更好的方法呢?

Webpack可以帮你解决这个问题!幸运的是,Webpack 加载器可以加载许多类型的文件。其背后的思想非常简单——在加载过程中动态地对载入文件进行可插拔转换。从本质上来说,加载器为我们处理各种文件。我们将选用一个特殊的babel-loader来将我们的ES6代码转译为ES5代码。

但最酷的是,加载器可以处理任何文件。所以,如果我们想加载样式——我们只需要添加style-loader!最终,我决定使用LESS,它稍微复杂一些——我将创建如下的加载链:

  • 首先,使用less-loader处理*.less文件,将其转换为CSS;
  • 然后,使用css-loader将编译好的css传递给下一个步骤;
  • 最后,使用style-loader将最终的样式引入到生成的代码中。

通过这个加载链,我们可以使用LESS编写组件的样式,下面这段代码演示了这种组件的入口点:

import './style/style.less';import Component from './src/component';&nbsp;export default Component;

借助Webpack将样式引入到JavaScript中 

正如你所见,加载样式像导入文件一样简单。的确,由less-loader、css-loader以及style-loader构成的加载链必须要在我们的Webpack配置文件中提前配置好(参考下一节的第一个示例)。

现在我们可以从相互独立的组件中加载样式,但是CSS默认使用全局变量,这意味着如果两个组件中使用了相同的类名,其中一个将被改写,我们如何回避这个问题呢?

我能想出来的最简单的方法是:在HTML标签和样式文件中,使用组件名称作为最外层元素的类名,人为地创建组件的作用域。就像这样:

.component-name {  span {    color: red;  }}const render = function() {  return (    <div className="component-name">      <span>I have scoped styles</span>    </div>  );};

组件样式的人为作用域

如此一来,所有组件将拥有唯一命名,当他们被封装进同一个应用中时不再产生冲突,能够很好地协同工作。而且,当我们想在应用层重新定义组件样式时,可以使用组件命名作为类名直接改写。

发布到NPM

接着,你如何将ES6模块发布到NPM上呢?事实上,你无须这样做。至少目前还不需要。你可以直接向外发布你的原生代码,但这通常是一个糟糕的想法,当你后续想将代码引入到主应用或其它组件中时会感到非常痛苦。当然,你可以通知Webpack(同样也可以通知Browserify)来编译需要用到的代码。但是,如果这样做,你不得不使用Webpack(以及浏览器)来运行各种测试,我通常在命令行中运行测试,因为这样运行速度更快,并且便于后续的自动化测试封装(也就是我们常说的持续集成)。

目前我在项目中应用的最好方法是——同时传送原生ES6代码和编译后的ES5代码,实现这个方法非常简单:

  • 向你的package.json文件添加构建指令;
  • 在预发布阶段运行构建指令;
  • 使用编译后的ES5代码作为主文件;
  • 通过package.json文件的额外字段暴露ES6代码。

它看起来是这样的:

{  "name": "es6-component",  "version": "1.0.0",  "description": "My awesome ES6 component",  "main": "es5/component.js",  "es6": "index.js",  "scripts": {    "build": "gulp build",    "prepublish": "npm run build"  }}

将ES6模块发布到NPM上的package.json

这种方法有两个优点:

  1. 在所有ES5代码中,我们可以轻松地引入或require()这个模块,它能够正常工作!
  2. 如果我们出于某些原因需要用到模块的源代码,我们同样可以轻松地通知Webpack使用“ES6”字段来加载或引入ES6代码。

单元测试及代码覆盖率

你必须佩服的是,在Babel中配置单元测试和代码覆盖率检测非常简单(得益于Babel伟大的生态系统,正如我之前提到的那样)。

--compilers: jsx?:babel/register

我一直使用mocha作为测试工具,所以我会讲解如何将其应用到项目中。支持ES6代码非常简单,你只需在执行mocha指令时添加一个编译flag(或添加到mocha配置文件)就可以通知mocha使用babel预编译器:

完成这一步之后,就可以在ES6代码中运行测试了,当然你也可以使用ES6来编写测试文件!

现在要处理最棘手的部分——我们有了React组件,我们想使用mocha完成测试,却又不想在浏览器中运行测试(可以运行一个PhantomJS,但是它非常繁重),我们应该如何去做呢?

答案就是jsdom——基于iojs用JavaScript实现了WHATWG的DOM和HTML标准。它比Phantom更轻量,并且满足几乎所有我们测试React所需的功能。

以下是为React配置jsdom环境的测试helper文件的示例:

import localStorage from 'localStorage';import {jsdom} from 'jsdom';&nbsp;// init jsdomglobal.document = jsdom();global.window = global.document.defaultView;global.navigator = global.window.navigator;&nbsp;// local storage polyfillglobal.window.localStorage = localStorage;global.localStorage = localStorage;&nbsp;// import react after domconst React = require('react/addons');&nbsp;before(function() {    // expose react and testutils    this.React = React;    this.TestUtils = React.addons.TestUtils;});&nbsp;beforeEach(function() {    // create container    this.container = global.window.document.createElement('div');});&nbsp;afterEach(function(done) {    // clean jsdom    this.React.unmountComponentAtNode(this.container);    // timeout    setTimeout(done);});

在命令行中运行React测试的jsdom环境

注意我使用import声明引入jsdom和localStorage,但却使用require()加载React,这是因为import声明会被提前,我们需要确保在jsdom初始化之后加载React。如果你尝试在DOM就绪前加载React,那么直到你与组件进行交互时它才会开始工作,然后你得到的往往是各种各样的错误,因为React假设这属于非浏览器环境,不使用DOM相关特性。

现在我们有了正确运行的mocha测试,我们也可以轻松获取Istanbul覆盖率检测工具并正常执行:

istanbul cover _mocha -- -R spec

组件交互

接下来实现我们的加分需求——无相互依赖的交互。这一部分内容来自于我正从事的一个项目,如果你不太感兴趣,大可跳过这一节。

当然,如果你依然感兴趣,那让我们一起讨论一下实现这个目标的方法。

我们需要使松耦合的系统中各部分相互交流,在完美的实现中它们甚至无须知道相互的存在,只须响应请求。这样的任务听起来是否非常熟悉?

你或许曾经听说过微服务这个概念,你甚至可能已经使用过它们。如果你对微服务所知甚少,我推荐你看一下Fred George对于微服务精彩的讲解。

如果你懒得看(或者想稍后看)他的演讲,那么简单了解一下微服务的思想:许多小规模、独立的,通过通用接口相互交流的离散服务实体。通用接口可以有多种形式,其中包括:消息总线、表征状态传输(REST,又称表征状态转移)、远程过程调用(RPC)等。

因为我们做的是客户端JavaScript应用,在接口问题上我们的确没有那么多的选择。幸运的是,有一个非常赞的库,它专门处理类似这样的情况——postal.js。

即使它仍然基于回调函数实现底层功能,但是它将消息分为channel和topic两类,提供了非常大的弹性。

通过示例演示所有的这一切是如何工作的,十分容易。

想象一下我们有一个App需要一些认证和URL签名功能来获取数据。通过postal我们可以定义一个认证channel,它将会监听那些签名请求,并通过不同的topic返回已签名的URL,就像这样:

import postal from 'postal';// get postal channel for current componentconst channel = postal.channel("auth");&nbsp;const signUrl = () => {  // signing code here};&nbsp;// listen to sign requestsconst signAction = channel.subscribe("url.sign", function(url, envelope) {  const signedUrl = signUrl(url);  channel.publish("url.signed", signedUrl);});import postal from 'postal';// get postal channelsconst channel = postal.channel("query");const authChannel = postal.channel("auth");// define data fetching stuffconst requestUrl = 'http://...';const getData = () => {  // data-fetching logic here};// listen for data requestsconst allItemsAction = channel.subscribe("items.all", () => {  // wait for signed url  authChannel.subscribe("url.signed", (signedUrl) => {    const data = getData(signedUrl);    channel.publish("items.data", data);  });  authChannel.publish("url.sign", requestUrl);});

在组件中使用postal.js的channels进行通信

这段代码可以很好地工作,因为我们无须了解任何有关其它组件的信息——我们只须了解使用哪个channel和topic。一方面,这意味着管理这些内容的负担落到开发者身上;另一方面,在这种实现的基础上,我们可以轻松地更换认证组件——今天我们使用OAuth,明天我们使用自定义token系统,以后使用其它功能,我们只须更换一下认证组件就可以支持新的工作流。

代码检查和源码映射(Source Map)

最后,我们再为项目加入一些小改进:支持代码检查,启用源码映射。

jshint不支持ES6和React代码,我们将使用eslint代替它。eslint支持JavaScript和JSX的语法,并可以通过插件进行扩展。

将之于Webpack结合非常容易,你只须在你的Webpack配置文件中添加几行代码。下面这个代码片段展示了所需的配置:

var path = require('path');&nbsp;module.exports = {    devtool: 'inline-source-map',    debug: true,    // your other props here    // ...    module: {      preLoaders: [        {          test: /\.jsx?$/,          exclude: /node_modules/,          loader: 'eslint-loader'        },      ]      // other modules options here    }};

注意node_modules文件夹不包括在检查的范围内,所以程序只会检查你实际的组件代码。

Webpack将在编译过程结束后把所有的检查结果输出到控制台。

Turris.js——汇总一切

结合以上提及的所有内容,我创造了Turris.js——它包含一系列helper包,还有一个yeoman生成器,你可以用它轻松地为ES6 React应用和独立组件搭建脚手架。

如果你对生成器不感兴趣,只想看看应用和独立组件的示例代码,你可以在它们各自的Github仓库中找到它们:turris-example-application还有turris-example-component。

创建新应用

我尝试使创建新应用尽可能地简单,你可以这样创建一个新应用:

  • 确保你已安装最新的io.js和NPM;
  • 从NPM安装yeoman和turris-generator:
  • npm install -g yo generator-turris
  • 创建一个新文件夹存放你的App,进入这个文件夹,执行turris生成器:


  • 在回答一系列问题后,yeoman将为你完成所有工作;
  • 执行“npm start”,启动你的新App;
  • 访问http://localhost:8080,打开你最喜欢的编辑器并将应用改为你喜欢的样子。

除了为基础应用搭建脚手架外,Turris生成器还提供了三个helper生成器:

  1. 组件生成器——将在你的App中生成一个新的组件,可以非常便捷地生成你将不会重用的小组件;
  2. 页面生成器——将生成一个新页面并将它插入到React路由中,这里没有什么奇妙之处,它只是一个帮助你节省时间的子生成器;
  3. Docker生成器——将生成一个dockfile,其中包含所有运行App所需的文件。

更多有关使用方法、子生成器、项目结构以及其它内容信息,可以在项目仓库的Readme文件中找到。

创建一个独立组件

创建一个组件并不难,你可以这样做(需求与主生成器相同):

  • 通过NPM安装turris-generator-component:
  • $ npm install -g generator-turris-component
  • 为你的组件创建一个新文件夹,进入这个文件夹,执行turris组件生成器:

  • 在回答一系列问题后,yeoman将为你完成所有工作;
  • 执行“npm start”,在调试模式下启动你的组件;
  • 访问http://localhost:8080,打开你最喜欢的编辑器并将应用改为你喜欢的样子。

更多有关使用方法、项目结构以及其它内容信息,可以在项目仓库的Readme文件中找到。

结束语

希望你已在这篇文章中找到有用的内容,或许你甚至已尝试我编写的生成器。即使你没有这样做——也请帮助我宣传一下!如果你已经尝试过——我非常乐意听取任何反馈意见,处理你们可能遇到的问题。当然,也很欢迎大家提交Pull Requests。(译者:刘振涛,审校:陈秋歌)

关于作者:Tim Ermilov,从事移动和Web开发工作。

英文原文:Building modular javascript applications in ES6 with React, Webpack and Babel

欢迎加入CSDN前端交流群:218126086,进行前端技术交流。 

Java二十年特别策划:有奖征文,评选结果出炉! Zen=禅道:图解AMD技术战略转型 从友盟微社区看Android第三方SDK架构实践 无创客 不青春!2015全国大学生移动应用创新大赛在京启动 响应式Web开发,必懂媒体查询(系统理论+实战教程) 实例剖析:如何用Foundation For Apps创建完美Web应用 【舌尖上的CTO】兄弟肉夹馍的开发运维一体化 开创未来的关键:是什么造就了硅谷?(下) 安全漏洞影响2.5万iOS应用?AFNetworking维护者发布回应 《近匠》专访AbleCloud李海磊:IoT平台求变 腾讯、京东、微软等设计专家齐聚,探讨移动应用体验创新设计 TIOBE 2015年5月编程语言排行榜:微软系语言份额上升 《Hadoop核心技术》作者翟周伟 :我与Hadoop的不解之缘 云集百位核心专家 中国云计算大会演讲议题公布(表) 细品这杯香浓的咖啡——阿里中间件高级专家沈询的Java之旅 超图研究院院长李绍俊:创新2.0时代的平台软件研发体系 优麒麟(Ubuntu Kylin)15.04发布派对在天津成功举行 【CTO讲堂】以API为核心的移动应用云大发展时代 游戏设计的迭代误用:从半成品到概念修正 成功的社区在于拥抱变化——知乎创始人周源专访 优化UITableViewCell高度计算的那些事 国外iOS大牛:开发Apple Watch应用我犯过的错 云上Java System Profiling与Debugging——蚂蚁金服观察与实践 搜狗商业平台Java技术实践 Java在电信软件领域的技术实战 关于Java框架Vert.x的几点思考 Java在游戏服务器开发中的应用 Java框架研发思考 那些年,Java程序员用过的开发工具 Java内存模型的历史变迁 Java 8与Apache Ignite 如何让下拉框只在选中的情况下出现那个三角形的下拉按钮啊?可以吗? 在hp—unix系统编c程序出现下面的错误 快来看啊!刚出炉的求解大送分!!Datagrid事件的问题,不要错过好!!简单!分多!! 哪里可以下载jbuilder9企业版?? 哪里有免费的空间可以申请? 如何获取某个窗体中各个部分的类名??? 我是一个刚刚对计算机感兴趣的人,想问一下大虾几个问题!! 有谁遇到过这样的问题?请大家帮一下忙!谢谢! 请问 jfreechart 怎么使用 ? 100 分请教!!! 数据库日志被删怎么办??? 怎样设置EDIT的长度设题????急!!!!!!!!!! 求职 求职 求职 求职 求职 求职 哪里有“Java Servlet Programming, 2nd Edition”电子书下载? 急,有关读写文本文件的! 北京掌中仙境技术有限公司招聘程序开发人员 在.net中如何获得数据库中的所有用户表的信息,以及......? 在线等!!菜鸟一问:用什么函数使‘空’返回为零,就像foxpro的iif... 如何实现两个form间参数的传递? 一个关于DBCHART的使用问题。 数据机构的一道题!~(队列) 求救高手?active dll的Ftp上传组件的问题?(100) TQuery返回的字段类型信息如何区分numeric还是float? 我感觉VC里最神秘的几块内容(至今也没搞懂) 在这里混了有段日子了 升星 散分!!(请版主别删) 欢迎大家加入我建的QQ群 请问一下各位是如何调用第三方的DLL。例如:华为DLL.清华深资DLL。等等。。。 QRBand能否自动换页的问题。 请问有哪位 有ACCP的的全套资料第一学期第一学年 资料 一个关treeview的问题 sql server有没有办法看一个image类型值是否有无? 嵌入到outlook控件的问题 一个奇怪的问题: 怎么老打不开数据库set db= new notesdatabase("","data.nsf")??? 如何调用DLL啊? JSP怎么样调用sessionbean? 如何在Cell单元格显示数据库中已image类型存放的图片?(急) php有什么好办法把mysql里面枚举型字段的各个项目读出来? easy problem 文件问题 在线等候 北京掌中仙境技术有限公司招聘程序开发人员 请问win2003中如何起用3d? 关于迭代开发模式 主菜单的字体怎么修改? C#中自动生成SQL语句(update,delete)是否并不怎么好呢? 关于在VC中开发数据库使用ORACLE的若干问题?(SQL SERVER 到 ORACLE转换的问题) 如果更新有外键约束的主键呢? 谁有播放*.dat的asp组件啊!~ 这是一个控件源码,为什么只有在运行时,才能显示控件的图形,请指教! 电脑一进系统就待机……sos 浅谈视图(Views) 本人急需自然景物的分形源程序(最好包括山水树),急!可加分 高分求免费电影下载网站,最好是一些提供最新电影的网站 是否存在等比数列{an},其前n项和sn组成的数列{sn}也是等比数列(急!)是否存在等比数列{an},其前n项和sn组成的数列{sn}也是等比数列,且这亮个数列的公比相同?若存在,试写出一个满足条件的数 16+513什么意思 一到高考数学模拟题如图,已知长方形ABCD中,AB=2,A1 B1分别是AD!BC边上的点,且AA1=BB1=1.A1E垂直B1D于点E.F为AB的中点.把长方形ABCD沿直线A1B1折成直二面角,且直线B1D与平面A1B1B所成角为30度.(1)求异 冰心说“爱在左,同情在右,走在生命的两旁”什么意思? 求A,B两地距离 这种图算哪种类型? USO是什么? 甲乙两人分别从A、B两地出发,相向而行,出发是他们的速度比是三比二.他俩第一次相遇后,甲的速度提高了百分之二十,乙的速度提高了百分之三十.这样,当甲到达B地时,乙离A地有二十八千米,那 请问谁见过164打头并且有9位的电话号码 什么叫USO? 《刘宣苦读成才》的意思》 1打头的和9打头的电话号码有什么不一样? uso是指什么是USO,不是UFO 甲乙两人同时从A地去B地,甲每小时行15千米,乙每小时慢2/5,甲到达B地后返回,在距离B地24千米的地方遇到乙,请问A、B两地之间的距离是多少千米 如图边长为a的正方形ABCD的对角线交与E,过E点做FG‖AB分别交AD,BC与F,G问以B为圆心2分之根号2...如图边长为a的正方形ABCD的对角线交与E,过E点做FG‖AB分别交AD,BC与F,G问以B为圆心2分之根号2乘以a USO是什么意思 天宫一号是中国首个目标飞行器,在轨运行周期5382s.若将其运行轨道近似为圆,则其离地面约为( );实际运行轨道为椭圆,离地面最近200km,最远346.9km,则其运动过程中最大加速度约为( )m/s2. 新概念2 第90课:这个Divers为啥不加定冠词the呢?第五行:oil rigs have to be repaired frequently and [divers],who often have to work in darkness a hundred feet under water,have been frightened out of their wits by giant fish bumping 纯净水中有哪些离子 lingo建模时有一约束条件(分段函数): Y=X X>=0 Y=X+100 X 新概念三里的句子都懂,该学些什么 农民赞美久旱逢雪的诗词歌赋均可前几天全国大范围降雪,久旱逢雪的良田终于可以限度一劫,老百姓感激上天现征集关于这场雪的文章,题材不限我先来一副对联:万顷良田终素裹 千家百姓始 8到是什么意思?!‘8到’是什么意思啊. 新概念4 47课(The great escape) 几个句子不懂1.That the equipment of modern camping becomes yearly more sophisticated is an entertaining paradox for the cynic, a brither promise for the hopeful traveller who has sworn to get away from it al of course中的course是什么意思? 8可以是什么意思啊?8应该可以是‘发’的意思喔! 读下图,完成下列问题.(1)G处的气候类型为_______,冬季其温度比同纬度的内陆地区____读下图,完成下列问题.(1)G处的气候类型为_______,冬季其温度比同纬度的内陆地区_______,是因为该地受____ 513什么意思 刘宣苦读成才景泰间,吉安刘公宣代戍于京师龙骧卫,为卫使畜马,昼夜读书厩中,使初不知也.公偶与塾师论《春秋》,师惊异之,以语使,使乃优遇之.未几,发解及第…….取解时,刘文恭公铉主试,讶 g(x)为一次函数,g(1)=3,g(2)=5 求g(x) 这类题没做过求详细解答f(2x)=3x+1,求f(2),f(x) 这类题也有点搞混了 求点拨! 360行分别指的是哪360行? =INDEX($A:$E,SMALL(IF($B$2:$B$13={"D","D1"},ROW($2:$13),4^8),ROW(1:1)),IF(MOD(COLUMN(),2),1,2))&"" 我想知道SMALL(IF($B$2:$B$13={"D","D1"},ROW($2:$13),4^8),ROW(1:1)),IF(MOD(COLUMN(),2),1,2))&"" 表格的行数和列数变了应该怎么变 看了这个图,你有什么感受? 360行是哪360行呢? 求函数{x=t² /2 的一阶导数和二阶导数dy/dx;d² y/dx² y=1-t 我的错题集上的,每条都讲一讲?(最好能归类)16.More and more people in china prefer to choose ____ cheap wireless phone service known as ____ "Little Smart".A.a;the B.a;/ C.the;the D.the;/17.There is ____ bus stop over there.You can lingo 怎么解分片线性?最后给个例子 d²y/dx²表示二阶导数,这个2为什么加的地方不一样,有什么区别 1.Bring me ________,please.I'll use it as ________ useful stick when I climb the mountains.A.an,an B.an,a C.a,an D.a,a用a或an填空_________uniform __________university _________unknown writer __________ useless tool _________ SPCA inspector ______ max=1000*(x11+x12+x13)+700*(x21+x22+x23)+600*(x31+x32+x33);(8*x11+6*x21+5*x31)=2/3(1-0.15)*(8*x12+6*x22+5*x32);(8*x13+6*x23+5*x33)=1/2(1-0.15)*(8*x12+6*x22+5*x32);(8*x11+6*x21+5*x31)=4/3(1-0.10)*(8*x13+6*x23+5*x33);8*x11+6*x21+5*x31 看看这几张照片,有何感想?http://imgsrc.baidu.com/forum/pic/item/d8c3a356ca54a381257fb509.jpg 刚出的新枪咋样? 蝗虫侠是女的还是男的 两点水怎么打 取四个有诗意的名字,分别代表两个参赛的“自我介绍” “才艺展示 ”“总结”“展望未来”的含义最好用诗句表达!名字要女孩子气一点哦 在4和12之间插入两个数,使前三个数成等比数列,后三个数成等差数列,求两个数 介子是强子吗rushang 3Q 信息上说我的积分513, 在4和12之间插入两个数,使前三个数成等比数列,后三个数成等差数列,求这两个数? 问一个字的读音,请问决定的决去掉两点水,怎么读谢谢 把《所见》改写成500字以上的作文 看见这张图有什么感想 两点水5笔怎么打 改写所见,500字就行了.描写的细腻一点. 在4与12之间插入两个数,是前三个数呈等比数列,后三个数成等差数列,求这两个数 两点水一个束什么字?是江苏省镇江市的一个镇名中的一个字. 513为什么是傻逼的意思 公式里面的为什么要用d表示 什么 为什么要用导数形式 是否存在等比数列{an},其前n项和Sn组成的数列{Sn}也是等比数列,且公比相同 坊{fang的第一声的组词是什么? 请问反函数导数和复合函数导数中的d是什么意思? 美国肯尼迪家族亲戚杀人案将重审 72朝韩在非军事方面保持合作 朝鲜遣返6明治奶粉放弃中国市场 停售前未跟供应朝鲜表态强化核力量 美韩揣测朝“核冒俄媒:斯诺登面临美政府“天罗地网”杭州推新能源交通 新能源车:年底再推上海大众宁波分公司建成 未来每分钟有国考报名昨结束 湖州邮政一个岗位33浙江推广餐馆厨房阳光化 从洗菜到上菜第二届世界浙商大会明开幕 2000余临安破获特大涉毒涉枪案 缴获整枪43《爸爸,我们去哪儿》:韩国开花中国也财富全球最适宜工作跨国公司排行 谷歌美媒:美军一美分卖掉超级航母 当作废中国人开始“抛弃”肯德基?吴亦凡林允儿崔始源 韩星最新街拍谁更外媒:菲律宾总统尴尬改口 撤回对中国朝鲜民众的娱乐活动:看3D电影 打乒“泰拳王”与“中国功夫王”见面会上大国考报名结束:37职位报名比例超10厉以宁称征遗产税不应急:中国老人有多明明是旧手机竟当奖品赠送出租屋藏奔驰江畔旧楼酷似爱群原是无人不晓地标市民因雾霾起诉环保局商家转行贵宾卡成废卡 逛街偶遇要求退鬼 话哈 哈前海法庭首次启用港籍调解员为还债晚开学 “成本意识”未免太迟塘厦39名低保学生可获补助不以信访量 考评地方官民用高铁应止步400公里/时新华分红险十年未分一分钱重点整治违法排污企业代表委员入社区接访今日有降雨人民日报:少用抗生素耽误治病吗“两会教育”观察两会·履职两会来了,说说百姓期盼大红马和小红马 他的故事你来编
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘