有没有人知道JavaScript中没有其他库依赖的MVC框架?我正在考虑使用backbone.s或spine.js这两种方法,其中CLAIM没有依赖性,但是他们的代码显然使用了jQuery或Zepto函数.我只使用本机JavaScript,因此可以用于任何框架(jQuery,MooTools,Dojo或NO FRAMEWORK)
我想将一个带有MVC的javascript框架用于复杂的Web应用程序(它将是一组相关的应用程序和页面之一),用于数字档案中的Intranet.我一直在看SproutCore和JavascriptMVC.我想选择一个框架并坚持下去.
比较这两者时,有谁知道区别特征是什么?
我想要一些简单,直接的东西,我可以轻松地自定义/破解,并且这不会让我的方式过多,但同时也为我提供了保持我的代码组织良好和事件驱动的基础.我还计划大量使用jquery.
我知道sproutcore是由Apple支持的,看起来它变得越来越受欢迎,并且它有一个漂亮的绿色网站:),而JavascriptMVC看起来不那么专业,没有跟随和更少的动力背后.
我已经完成了两者的教程,我对SproutCore印象更深(在JMVC教程中你没有做任何实质性的事情) - 但在我脑海中的某个地方,我觉得JMVC可能会更好,因为它没有'尝试做太多 - 它只是给你基于几个jquery插件的MVC功能,你可以使用jquery用于其他一切,所以它的灵活性.虽然SproutCore似乎有更多自己的API等......这在某种程度上也很不错......但是你有点陷入其中....嗯我很困惑:).
任何想法将不胜感激.
我是第一次使用Backbone.js,并试图了解它是如何工作的.我有一个搜索表单,通过Ajax提取结果并动态地将它们写入页面.
我现在正试图弄清楚如何在Backbone中最好地构建它 - 我读了这个问题,但我并不完全理解如何将表单和结果连接在一起.
这是我的HTML:
<form id="flight-options"> <!-- options for user to choose-->
<input type="radio" name="journey" value="single">Single<br/><input type="radio" name="journey" value="return">Return
<input type="checkbox" name="airline" value="aa">AA<br><input type="checkbox" name="airline" value="united">United
</form>
<div id="results"> <!-- results, written by Ajax -->
<h3>Results</h3>
<ul id="results-list">
</div>
Run Code Online (Sandbox Code Playgroud)
以下是我在构建Backbone代码的方法:
var SearchModel = Backbone.Model.extend({
performSearch: function(str) {
// fire the ajax request. provide a bound
// _searchComplete as the callback
},
_searchComplete: function(results) {
this.set("searchResults", results);
}
});
var SearchFormView = Backbone.View.extend({
tagName: "form",
id: "flight-options",
events: { …Run Code Online (Sandbox Code Playgroud) 我一直在阅读JavaScriptMVC框架的文档,看起来很有趣.我想知道这里是否有人使用过该框架,并取得了什么成功.
如果您有任何问题,请与JavaScriptMVC分享您的经验.如果你可以建议另一个很好的MVC javascript框架.
最好的问候,埃吉尔.
我打算用JavaScript编写一个相当大规模的Web应用程序.我相信我将使用CanJS开发webapp来组织我的客户端部分.
我强烈考虑将Node.js用于我的服务器端组件,但我想知道设置Node接受和处理REST请求的最佳方法是什么.我做了一些谷歌搜索,并遇到了一个名为快递的东西.对此有何评论?
任何帮助/建议将不胜感激.
我是AngularJS的新手,而且 - 由于它非常复杂而且这种方法对我来说很新,我有点困惑.
我来自"经典"背景(服务器端模板语言[如Yii,django,Smarty] +一些jQuery使事情有点动态).
假设我有一个菜单栏(Bootstrap NavBar,或其他任何东西) - 一个存在于主页面内容之外的元素,如下所示:
<body>
<div id="menubar">
... <!-- menu content -->
</div>
<div class="container">
<div ng-view></div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
现在我想使菜单有点动态,即添加或删除控制器内的一些菜单项.使用服务器端框架及其模板系统,例如Yii - 我只是有一个BaseController带$menuItems变量的类,并且每次都在渲染它menuBar,而所有控制器都会继承,BaseController因此他们可以修改项目.
此外,我需要一个处理searchForm位于内部菜单栏的功能.它应该住在哪里?
什么是Angular方式这样的事情?到目前为止,我一直在考虑创建自定义service或扩展$rootScope.
在开发Web应用程序而不是Web站点时,有什么理由可以使用多个HTML页面,而不是使用一个html页面并通过Javascript执行所有操作?
我希望它取决于应用程序 - 也许 - 但会欣赏有关该主题的任何想法.
提前致谢.
编辑:
根据这里的回复和我自己的一些研究,如果你想做一个单页,完全JS-Powered的网站,一些有用的工具似乎包括:
JQuery插件:
JQuery历史:http: //balupton.com/projects/jquery-history
JQuery地址:http: //plugins.jquery.com/project/jquery-address
JQuery分页:http: //plugins.jquery.com/project/pagination
构架:
Sproutcore http://www.sproutcore.com/
Cappucino http://cappuccino.org/
可能是JMVC:http: //www.javascriptmvc.com/
javascript model-view-controller jquery prototype javascriptmvc
我的一些观点需要将他们的textareas转换为富文本编辑器.
我正在使用jwysiwyg作为编辑器.当初始化编辑器时,它要求它所附加的元素在页面中,即当我调用$(this.el).wysiwyg()时,this.el已经在文档中.
我的大多数观点实际上并没有将自己附加到dom上 - 他们的渲染方法只是使用应用模板引擎设置其元素html内容,例如$(this.el).html(this.template(content)
视图/控制器进一步向上看实际将这些子视图插入页面.同时,视图在模型更改时会重新渲染.
如何确保编辑器每次渲染时都附加到元素上,并且在元素已经在页面中之前仍然确保编辑器没有附加?
显然,我可以在这个特殊情况下共同破解一些东西,但我想要一个适用于所有情况的优雅解决方案.
任何帮助将非常感激.
编辑:这里的要点是解决方案必须优雅地扩展以覆盖渲染后必须设置样式的多个元素,并且在它们位于DOM之前不得设置样式
编辑:如果我做自上而下的渲染,这不是问题,但这很慢,我想要一个解决方案,我可以从下往上渲染,然后在顶部插入完整的视图
编辑:
使用下面建议的一些技术的组合,我正在考虑做类似以下的事情.任何评论/批评将不胜感激.
app/views/base_view.js:
initialize: function() {
// wrap the render function to trigger 'render' events
this.render = _.wrap(this.render, function() {
this.trigger('render')
});
// bind this view to 'attach' events.
// 'attach' events must be triggered manually on any view being inserted into the dom
this.bind('attach', function() {
this.attached();
// the refreshed event is only attached to the render event after the view has been attached
this.bind('render', this.refreshed())
// each …Run Code Online (Sandbox Code Playgroud) 我目前正在为有限(本地)目标开发一个社区(如轻量级"社交网络").这是SEO无关紧要的第一个项目,我可以愉快地排除no-js用户.这就是为什么我正在考虑启动项目并编写我的第一个完全使用Javascript和我的第一个Node应用程序构建的网站,这是出于教育原因.
细节到目前为止:
浏览器:jQuery,也许是JavaScriptMVC(有一些我不喜欢JavaScriptMVC的东西(比如路由),也许我写自己的小MVC或者你知道一个更合适的框架吗?)
服务器:Node.JS,Express框架,(可能是socket.io或nowjs以获取更多功能)
到目前为止我有几个问题.我知道问一个问题更好但是有更多或更少的连接:
Express看起来很不错但我错过了MVC.我找不到任何实现mvc的项目,并且是基于Express构建的.这有什么理由吗?在Express中路由很好但是我需要一种方法来跨多个文件传播代码(控制器将是我猜的最佳方式,应用程序不会很小,我需要它可维护)
该应用程序或多或少完全基于AJAX(json)请求.无论如何,Express是否适用于此类应用程序?我认为编写这个项目的最好方法是公开一个json REST api,然后可以通过AJAX和移动设备应用程序(我也将编写)通过Web应用程序查询.在我看来,Express'路由系统非常适合REST.但随意推荐其他框架.
我刚刚开始乱用角度js,我正试图通过后期动作加载数据.
我正在使用angularjs v.1.0.2
这是我的代码:HTML:
<!DOCTYPE html>
<html ng-app>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title></title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width">
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js"></script>
<script src="<?php echo $baseUrl?>/js/profilling/main.js"></script>
</head>
<body>
<div ng-controller="GroupsCtrl">
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
main.js:
function GroupsCtrl($scope, $http) {
$scope.url = '/file.php';
$scope.images = [];
function handleGroupsLoaded(data, status) {
console.log(data);
}
$scope.fetch = function () {
$http.post($scope.url).success($scope.handleGroupsLoaded);
}
$scope.fetch();
}
Run Code Online (Sandbox Code Playgroud)
我正试图遵循这个jsfiddle:http://jsfiddle.net/simpulton/wHL3F/
但是我收到以下错误:
TypeError:undefined不是http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:92:92的一个函数 (http://ajax.googleapis.com/ ajax/libs/angularjs/1.0.2/angular.min.js:76:119)http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:76:352 at Object.e.$ eval(http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js:86:220)at Object.e.$ digest( …
javascriptmvc ×10
javascript ×9
angularjs ×2
backbone.js ×2
express ×2
node.js ×2
html5 ×1
jquery ×1
prototype ×1
rest ×1
sails.js ×1
sproutcore ×1