日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

Backbone React Requirejs 应用实战(一)——RequireJS管理React依赖

發(fā)布時(shí)間:2025/3/17 javascript 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Backbone React Requirejs 应用实战(一)——RequireJS管理React依赖 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

試著用React替換Mustache打造了一個(gè)簡(jiǎn)單的頁(yè)面,http://backbone-react.phodal.com/,當(dāng)然Router用的還是Backbone的Router(react-router似乎還沒(méi)有做準(zhǔn)備好做client-side的Router)。

Backbone RequireJS React 組合

組合的情況以及開(kāi)發(fā)環(huán)境如下

  • IDE: Webstorm(開(kāi)源license,支持JSX)
  • Backbone: Router + Model
  • React: react-with-addons
  • JSXTransformer
  • react.backbone

其他

  • loadsh替換underscore
  • zepto替換jquery
  • RequireJS jsx插件

RequireJS管理React依賴

JSX Requirejs

github上有一個(gè)插件是: jsx-requirejs-plugin

A RequireJS plugin for JavaScript files containing JSX. It's r.js friendly (i.e. all files containing JSX will be pre-compiled during the r.js build).

于是,安裝jsx-requirejs-plugin

bower install jsx-requirejs-plugin --save-dev

Requirejs JSX使用

1.添加paths

react: 'vendor/react-with-addons.min',"JSXTransformer": 'vendor/JSXTransformer',jsx: 'vendor/jsx','react.backbone': 'vendor/react.backbone',

2.使用jsx!

require(['jsx!app.react'], function (App) {});

最后我的main.js如下所示:

'use strict';require.config({paths: {jquery: 'vendor/jquery.min',react: 'vendor/react-with-addons.min',"JSXTransformer": 'vendor/JSXTransformer',jsx: 'vendor/jsx','react.backbone': 'vendor/react.backbone',backbone: 'vendor/backbone',underscore: "vendor/lodash.min",text: 'vendor/text'},shim: {underscore: {exports: '_'}} });require(['backbone', 'jsx!app.react' ], function (Backbone, App) {App.initialize(); });

換句話說(shuō),我們將app.react.js視作app.react.jsx(這里的.react是為了區(qū)分js和jsx)。

下面是我的router.react.js

define(['jsx!router.react' ], function (Router) {var initialize = function () {new Router();};return {initialize: initialize}; });

在我們的router里導(dǎo)入了不同的component,下面是一個(gè)精簡(jiǎn)的router

'use strict';define(['underscore','backbone','react','jsx!component/IndexComponent.react', ],function(_, Backbone, React, IndexComponent){var AppRouter = Backbone.Router.extend({index: function(){React.render( <IndexComponent />, document.getElementById('main_content'));}initialize: function() {var self = this,routes = [[ /^.*$/, 'index' ]];_.each(routes, function(route) {self.route.apply(self, route);});Backbone.history.start();}});return AppRouter; });

到此,我們可以愉快地用Requirejs管理我們的component。

其他

完整的Router

我的router如下所示:

define(['underscore','backbone','react','jsx!component/IndexComponent.react','jsx!component/AboutComponent.react','jsx!component/ProductComponent.react','jsx!component/ProjectComponent.react','jsx!component/LibraryComponent.react','model/UserModel','data/libraries' ],function(_, Backbone, React, IndexComponent, AboutComponent, ProductComponent, ProjectComponent, LibraryComponent, UserModel, libraries){var AppRouter = Backbone.Router.extend({index: function(){React.render( <IndexComponent />, document.getElementById('main_content'));},about: function(){React.render( <AboutComponent />, document.getElementById('main_content'));},product: function(){React.render( <ProductComponent />, document.getElementById('main_content'));},library: function(){React.render( <LibraryComponent items={libraries} />, document.getElementById('main_content'));},project: function(){var user = new UserModel({name: 'phodal'});var UserView = React.createFactory(ProjectComponent);var userView = new UserView({model: user});React.render(userView, document.getElementById('main_content'));},initialize: function() {var self = this,routes = [[ /^.*$/, 'index' ],[ 'about', 'about' ],[ 'product', 'product' ],[ 'project', 'project' ],[ 'library', 'library' ]];_.each(routes, function(route) {self.route.apply(self, route);});Backbone.history.start();}});return AppRouter; });

問(wèn)題

  • JSXTransformer壓縮后的大小>100kb
  • 下一篇: 《Backbone React Requirejs 應(yīng)用實(shí)戰(zhàn)(二)——使用Backbone Model》

    Github: https://github.com/phodal/backbone-react

    總結(jié)

    以上是生活随笔為你收集整理的Backbone React Requirejs 应用实战(一)——RequireJS管理React依赖的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。