目录
源代码
优化
安装 Browserify
首页 web前端 html教程 异步加载非核心 CSS_html/css_WEB-ITnose

异步加载非核心 CSS_html/css_WEB-ITnose

Jun 24, 2016 am 11:33 AM

在生产环境中如果依靠前端引用JSXTransformer.js文件来实现JSX向JavaScript的转换,那是绝对不靠谱的。所以,使用Reactjs的童鞋就需要使用更有逼格的方式来完成这项任务。作为现在最常用的前端构建工具gulp搭配上Browserify来搞定这个问题那真是拉风的不要不要的 :)

废话不多说,咱们来点直接的吧。

源代码

我们这次的任务就是让这段满目疮痍的源代码变得更优化,千里之行,这是开始。如果有童鞋看不懂这段代码是用来做神马的,那么我只能说,“妈妈叫你回家看基础了。” 回家之路 (看不懂代码的,请猛戳)。

<div id="app"></div><script type="text/jsx">	var HelloWorld = React.createClass({ 		render: function() { 			return (				<div> Hello World </div> 			);		}	}); 	React.render(<HelloWorld />, document.getElementById('app'));</script><script type="text/jsx">	var Child = React.createClass({ 		render: function() { 			return (				<div> The Child </div> 			);		}	}); 	var Parent = React.createClass({ 		render: function() { 			return (				<div> Hello World </div>				<Child/> 			); 		} 	}); 	React.render(<Parent />, document.getElementById('app'));</script>
登录后复制

优化

前面把两个组件都写到一块了,现在来分割成独立的文件。其中一个命名为js/components/Parent.jsx,内容如下:

var Child = require('./Child.jsx');var Parent = React.createClass({  render: function(){    return (      <div>        <div> Hello World </div>        <Child/>      </div>    )  }});module.exports = Parent;
登录后复制

Parent 的子元器件Child写到js/components/Child.jsx中,内容如下:

var Child = React.createClass({  render: function(){    return (      <div> The Child </div>    )  }});module.exports = Child;
登录后复制

写到这里,我们已经将两个组件做了初步的拆分,如果有童鞋对module.exports是神马还是一知半解或者根本不懂这是要搞什么飞机,那么请去百度自行谷歌CMD规范,相信度娘会很妩媚的帮你解惑。

如果要真正让元器件显示在页面上需要执行React.render函数,这个是写在js/app.js中的,内容如下:

var Parent = require('./components/Parent.jsx');React.render(<Parent />, document.getElementById('app'));
登录后复制

做到这里,我们还顺带了做了一件很有意义的事情,就是对文件文件目录做了优化,组件放置在/components文件夹中,启动放置在根目录/js下,清晰明了。

使用Browerify之后,html文件中只需要引入一个自定义script文件就好了 ,如下:

<script src='js/bundle.js'></script>
登录后复制

所有依赖的js内容未来都会被编译到bundle.js文件中。

安装 Browserify

首先要安装 Gulp 。这里我假设大家的系统上都安装好了 nodejs 并且也全局安装了 gulp ,也就是敲gulp -v
是可以看到输出的。

首先确认你的电脑已经成功安装了gulp,至于怎么安装,这我就不多说了。去谷歌百度一下会是一个好办法。

如果你在命令行敲击如下命令

gulp -v
登录后复制

输出结果大概如下面这个这样子的话,那就说明你已经成功安装了gulp。

CLI version 3.9.0Local version 3.9.0
登录后复制

在这个基础上,进入项目目录还需要来局部安装 gulp ,browserify 以及相关的辅助工具:

npm install --save-dev gulp browserify vinyl-source-stream babelify
登录后复制

使用Mac的童鞋不要忘记加sudo哟。

说一下上面四个包的各自作用:

  • gulp 是任务运行环境,用来进行任务调度

  • browserify 用来 require js 的模块

  • vinyl-source-stream 把 browserify 输出的数据进行准换,使之流符合 gulp 的标准

  • reactify 使用它来实现 JSX 编译功能

然后到 gulpfile.js 中,填写如下内容:

var gulp = require("gulp"),	browserify = require('browserify'),	reactify = require('reactify'),	source = require('vinyl-source-stream');gulp.task('jsx', function() {	browserify('./js/app.js')		.transform(reactify)		.bundle()		.pipe(source('bundle.js'))		.pipe(gulp.dest('js'));});
登录后复制

来解释一下上面的脚本流程。首先就是把入口文件 app.js 交给 browserify 进行处理,对于 jsx 的编译,官方推荐使用的就是reactify。下一步,运行 bundle()来把所有依赖都打包成 bundle.js ,但是注意,browserify 不是一个专门为 gulp 写的包,所有它输出的数据流并不能直接 pipe 给 gulp 使用,所以,需要用到 source()接口,也就是 vinyl-source-stream 这个工具来处理一下,然后 pipe 给 gulp ,gulp.dest 会把输出的 bundle.js 文件保存到 js 文件夹中。

任务写好了,在命令行执行:

gulp jsx
登录后复制

这样就生成了 js/bundle.js 文件了。由于这个文件的标签已经添加到 index.html 中了,所以直接用 chrome 打开就可以看到运行效果了。

文章改编自 《当 React 遇见 Gulp 和 Browserify》

原文 http://segmentfault.com/a/1190000004002631
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

HTML容易为初学者学习吗? HTML容易为初学者学习吗? Apr 07, 2025 am 12:11 AM

HTML适合初学者学习,因为它简单易学且能快速看到成果。1)HTML的学习曲线平缓,易于上手。2)只需掌握基本标签即可开始创建网页。3)灵活性高,可与CSS和JavaScript结合使用。4)丰富的学习资源和现代工具支持学习过程。

HTML,CSS和JavaScript的角色:核心职责 HTML,CSS和JavaScript的角色:核心职责 Apr 08, 2025 pm 07:05 PM

HTML定义网页结构,CSS负责样式和布局,JavaScript赋予动态交互。三者在网页开发中各司其职,共同构建丰富多彩的网站。

了解HTML,CSS和JavaScript:初学者指南 了解HTML,CSS和JavaScript:初学者指南 Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

Gitee Pages静态网站部署失败:单个文件404错误如何排查和解决? Gitee Pages静态网站部署失败:单个文件404错误如何排查和解决? Apr 04, 2025 pm 11:54 PM

GiteePages静态网站部署失败:404错误排查与解决在使用Gitee...

HTML中起始标签的示例是什么? HTML中起始标签的示例是什么? Apr 06, 2025 am 12:04 AM

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

如何用CSS3和JavaScript实现图片点击后周围图片散开并放大效果? 如何用CSS3和JavaScript实现图片点击后周围图片散开并放大效果? Apr 05, 2025 am 06:15 AM

实现图片点击后周围图片散开并放大效果许多网页设计中,需要实现一种交互效果:点击某张图片,使其周围的...

HTML,CSS和JavaScript:Web开发人员的基本工具 HTML,CSS和JavaScript:Web开发人员的基本工具 Apr 09, 2025 am 12:12 AM

HTML、CSS和JavaScript是Web开发的三大支柱。1.HTML定义网页结构,使用标签如、等。2.CSS控制网页样式,使用选择器和属性如color、font-size等。3.JavaScript实现动态效果和交互,通过事件监听和DOM操作。

如何使用JavaScript区分关闭浏览器标签页和关闭整个浏览器? 如何使用JavaScript区分关闭浏览器标签页和关闭整个浏览器? Apr 04, 2025 pm 10:21 PM

如何在浏览器上使用JavaScript区分关闭标签页和关闭整个浏览器?在日常使用浏览器的过程中,用户可能会同时�...

See all articles