根据当前页面加载和运行Javascript模块
Loading and running Javascript modules depending on current page
我有一个使用Laravel构建的多页面网站,现在我正在研究如何构建Javascript前端。Javascript将用于一些小事情,例如在按钮单击时显示/隐藏组件,提交表单时调用Ajax,将组件附加到DOM,调整在Laravel/Blade中创建的组件的大小/定位。
纯JS示例:
//navbar.js
export function exec() {
var hamburger = document.getElementById("hamburger");
var menu = document.getElementById("menu");
hamburger.onclick = function() {
menu.classList.toggle("expanded");
};
};
// app.js
var navbar = require('./navbar');
/* more imports */
navbar.exec();
/* more executions of modules*/
我已经将代码分解为(ES2015)模块,然后使用browserfy将这些模块连接起来。这意味着所有的东西都试图在每一页上执行。我应该如何构建主文件中模块的加载结构,以便它只加载基于当前页面的必要模块?
我已经研究了React和Vue是否使用了带有组件的路由,以及更好的组件结构和渲染,这似乎可以做到这一点,但它们似乎只适用于单页web应用程序。
React示例
//progressbar.js
var React = require('react');
var ReactDOM = require('react-dom');
var ProgressBar = React.createClass({
render: function() {
return (
<div className="ProgressBar">
This is a progress bar.
</div>
);
}
});
module.exports = ProgressBar;
//app.js
import React from 'react';
import { render } from 'react-dom';
var ProgressBar = require('./progressbar');
function renderToElements(toRender, elements) {
for (var i = 0; i < elements.length; i++) {
render(toRender, elements[i]);
}
}
renderToElements(
<ProgressBar />,
document.getElementsByClassName('progress-bar')
);
React的一个问题(我也认为Vue)是,如果我使用在PHP中创建的变量使用Blade创建了一个组件,并且我想将其用作React组件,我必须在React中重新提交该组件。我该如何保持这些变量?我是否必须对服务器进行Ajax调用,然后再次获取该值?
Laravel+React示例
//somepage.blade.php
/* other code */
<div class="progress-bar">
<div class="bar" style="width: {{$product->progress}}%">
<span>
<span class="sum">{{$product->progress}}</span>
</span>
</div>
</div>
/* other code */
//progressbar.js
var ProgressBar = React.createClass({
render: function() {
return (
<div className="ProgressBar">
This is a progress bar.
</div>
);
},
handleResize: function(e) {
//do something
}
});
我错过了什么?
只需使用React路由器并将路由定义为:
<Router>
<Route name="welcome" />
<Route name="about" />
...
</Router>
你会发现它使用起来非常简单明了,当然它会大大简化你的应用程序。
相关文章:
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 向下滚动时运行javascript
- 在Android WebView中运行Javascript-onPageFinished循环
- 在父网页的iframe中运行JavaScript
- 有条件地运行javascript函数-Razor,HTML
- 如何通过获取用户输入和使用按钮来运行JavaScript函数
- 使用c#在Web服务器上运行JavaScript方法
- 单击链接时停止运行javascript
- 在浏览器检查表单之前运行javascript onsubmit
- 如何在表单提交事件后运行JavaScript*
- Mediawiki小部件将不会运行javascript
- 有没有一种方法可以在服务器端页面加载之前在加载时运行javascript
- 在GitHub上运行JavaScript Koans
- Chrome扩展:是否有一种方法可以运行JavaScript来获取页面上的内部html,并将其保存到扩展中的变量中
- 在不加载页面的情况下运行javascript
- [AutoIt]如何使用FF.au3在FireFox上的页面中运行javascript
- 仅在屏幕媒体上运行javascript/jquery,而不是打印
- Scala提升了如何运行javascript函数并将返回值存储在变量中
- 安卓系统:通过loadUrl运行javascript时,网络视图中的视频会冻结
- 在页面加载完成之前,使用URL参数运行JavaScript