Angularjs Light版

Med*_*uly 2 asp.net-mvc angularjs dotliquid reactjs

我在许多项目中使用angular,特别是在ASP.NET MVC中,但我不喜欢angular-

  • 路由器(也是ui-router,这确实不是什么问题,因为它只是一个插件) - web-apps概念杀死所有ASP.NET功能
  • 服务和工厂 - 所有这些都可以在通用控制器内完成.(这可能听起来很棘手)
  • 常量和值 - 如果您使用requirejs或其他AMD,我认为这不是真正需要的

我喜欢的角度只是指令,当我做大嵌套指令时,我使用相同的控制器foreach,所以没有$scope交互(较少的观察者)

.controller('BaseGridCtrl', function(){
   //instead of 
   //$scope.value = 123;

   var ctrl = this;
   //this  is for Table-base-directive
   ctrl.value = 123;
   //this  is for Table-head-directive
   ctrl.value2 = 123;
});
.directive('table-base', function(){
    return {
        template: '<div>{{bgc.value}}</div>',
        controller: 'BaseGridCtrl',
        controllerAs: 'bgc'
    }
});
.directive('table-head', function(){
    return {
        template: '<div>{{bgc.value2}}</div>',
        controller: 'BaseGridCtrl',
        controllerAs: 'bgc'
    }
});
.directive('table-foot', function(){
    return {
        template: '<div>{{bgc.value3}}</div>',
        controllerAs: 'bgc',
        controller: function(){
           var ctrl = this;
           ctrl.value3 = 123;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

所以链接功能使用很少见.特别是我喜欢那个有角度的容易检测指令 - 这很好,因为你只需要写1个标签<grid>而不是reactjs组件(这也可能听起来很棘手).在我的项目中,我使用DotLiquid进行剃刀视图(它作为字符串存储在数据库中)示例:

<grid theme="some" route="localhost:9000/some/action"></grid>
Run Code Online (Sandbox Code Playgroud)

所以dotLiquid只是渲染这个字符串没有问题,甚至在angularjs旁边应用其他的bingings.这很棒,因为所有东西都是自包含的.这是reactjs无法实现的 - 您需要自己引导组件

React.renderComponent(<Grid />, document.querySelector('#someId'))
Run Code Online (Sandbox Code Playgroud)

恢复

目前它很重,大约100kb,但没有所有这些不必要的东西,它会非常轻.我想只使用directivecontroller服务,还有服务器端渲染角度将在每个请求上自行引导,这是不明智的,但更轻的版本,它有点权衡.有没有人试图成功剥离角度服务?或者是否有任何考虑,任何想法?

编辑

角光看起来很有前景,但是:

  • 它不提供HTML标记检测,只提供属性
  • 真的很难看,alight.directives.al.getValue这对我或其他人来说真是太糟糕了?

EDIT2

好吧,100kb可能不会播放很多.但是可以把它视为锻炼,你可能知道,在页面加载时只角度启动一次,所以它必须构建应用程序,拉动所有模块,配置每个模块,然后是模块的所有服务,然后将它们注入需要的地方,然后供应从工厂和服务到任何注入它们的人的回调,至少它会检查是否存在(在每个模块上),所有这一切都在开始时发生,只有一次!通过擦除大小,我们还可以最小化javascript执行(实际上它会),工厂和服务观察者,因此我们不需要任何未使用的部分.我们甚至可以摆脱控制器(并使用它们内联),只有1项服务.angular.directive(这是党的最佳部分).看过胡子,车把,但它们就像反应一样.

leg*_*ega 5

你可以尝试Angular Light ~15kb(gzipped),它没有服务,工厂,常量,值,DI,路由器等等.

此外,它还有一些有用的功能,如文本指令和Object.observe(基准)支持

编辑

它提供HTML标记检测,属性和注释.