'grunt build' νμ μ λ ¬μ΄ μλνμ§ μμ΅λλ€. λλ κ·Έκ²μ΄ μ΄λ»κ²λ κ·Έκ²μ κΉ¨λ¨λ¦¬λ κ²μ΄ js-minifyλΌκ³ κ°μ ν©λλ€. ν€λλ₯Ό ν΄λ¦ν΄λ μ무 μΌλ μΌμ΄λμ§ μμ΅λλ€. λ€λ₯Έ λͺ¨λ κ²μ΄ μλνμ§λ§ μ΄μν©λλ€. λΉμ·ν λ¬Έμ κ° μλ μ¬λμ΄ μμ΅λκΉ?
μ¬κΈ° λ΄ μ§μ 컨νΈλ‘€λ¬κ° μμ΅λλ€.
controller: ['$scope', '$filter', 'ScoresAPI', 'ngTableParams', function($scope, $filter, ScoresAPI, ngTableParams)
{
ScoresAPI.getLeagueStandings($scope.leagueId)
.success(function(data)
{
$scope.tableParams = new ngTableParams({
page: 1,
count: data.length,
sorting: false
}, {
total: data.length,
counts: [],
getData: function($defer, params)
{
var orderedData = params.sorting() ? $filter('orderBy')(data, params.orderBy()) : data;
$defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));
}
});
});
}]
λλ κ°μ λ¬Έμ μ μ§λ©΄ ν΄μλ€.
μ κ²½μ°μλ jsminify λμμ΄ μλμμ΅λλ€. κ·Έλ¬λ htmlmin λμμ΄μμ΅λλ€. collapseBooleanAttributes
λ₯Ό falseλ‘ λ³κ²½νλλ° λ¬Έμ κ° ν΄κ²°λμμ΅λλ€. λμμ μ 체 ꡬμ±μ λ€μκ³Ό κ°μ΅λλ€.
htmlmin: {
dist: {
options: {
collapseWhitespace: true,
collapseBooleanAttributes: false,
removeCommentsFromCDATA: true,
removeOptionalTags: true
},
files: [{
expand: true,
cwd: '<%= yeoman.dist %>',
src: ['*.html', 'views/{,*/}*.html', 'app_components/{,**/}*.html'],
dest: '<%= yeoman.dist %>'
}]
}
}
μ’μ, λ΄ λ¬Έμ λ ν΄κ²°νμ΅λλ€. κ°μ¬ ν΄μ!
λλ μ€λ λ°λ‘ μ΄ λ¬Έμ μ μ§λ©΄νλ€. μ΄κ²μ μ μ©ν κ²μΌλ‘ νλͺ λμμ΅λλ€.
νμ§λ§ μ΄ μ루μ μ΄ λ¬Έμ λ₯Ό μ’ κ²°ν κ²μΌλ‘ κ°μ£ΌνκΈ°μ μΆ©λΆνμ§ νμ ν μ μμ΅λλ€. λ€λ₯Έ λͺ¨λ κ²μ Gruntfile.jsλ₯Ό νΈμ§νμ§ μκ³ λ μ λλ‘ μλν©λλ€. ng-tableμ΄ μλ μ΄μ λ λ΄ μ§μμ λμ΄μλ κ²μ λλ€.
μμ νλ‘κ·Έλ¨μ μ μκ²λ ν¨κ³Όμ μ΄μμ΅λλ€. κ·Έλ¬λ μ΄κ²μ μ λ§λ‘ μ¬κ°λμ΄μΌ ν©λλ€. Readmeμ μ λν μΈκΈμ΄ μμ΄μΌ ν©λλ€.
μμ νλ‘κ·Έλ¨μ μ μκ²λ ν¨κ³Όμ μ΄μμ΅λλ€.
μ΄κ²μ λλ₯Ό μν΄ μλνμ§ μμ΅λλ€. λλ bowerλ₯Ό μ¬μ©νκ³ μμ κ²μλ λ²μ κ³Ό λ€μ λ³κ²½ μ¬νμ λͺ¨λ μλνμ΅λλ€.
src: ['_.html', '보기/{,_/}_.html', 'bower_components/{,__/}_.html'],
μ΄κ²μ λ΄κ° κ°μ§κ³ μλ html νμΌ λͺ©λ‘μ λλ€.
$ls -la bower_components/**/*.html
-rw-rw-r-- 1 andrei andrei 1585 iun 7 2013 bower_components/es5-shim/tests/index.html
-rw-rw-r-- 1 andrei andrei 1546 iun 7 2013 bower_components/es5-shim/tests/index.min.html
μ΄ μμ μ¬νμ μ΄λ»κ² μλν©λκΉ? κ·Όλ³Έ μμΈμ 무μμ λκΉ? AngularJS λ²μ 1.2.15κ° μμ΅λλ€.
κ°μ¬ν©λλ€!.
ν ... λ΄ μν©μμ $templateCache
κ° μ¬μ©λ κ²μΌλ‘ 보μ΄λ©° μ΄κ²μ΄ μμ "*.html" ν¨ν΄μ 무μνλ μ΄μ μ
λλ€.
$templateCache.put('ng-table/header.html', '<tr> <th ng-repeat="column in $columns" ng-class="{ \'sortable\': parse(column.sortable), \'sort-asc\': params.sorting()[parse(column.sortable)]==\'asc\', \'sort-desc\': params.sorting()[parse(column.sortable)]==\'desc\' }" ng-click="sortBy(column, $event)" ng-show="column.show(this)" ng-init="template=column.headerTemplateURL(this)" class="header {{column.class}}"> <div ng-if="!template" ng-show="!template" ng-bind="parse(column.title)"></div> <div ng-if="template" ng-show="template"><div ng-include="template"></div></div> </th> </tr> <tr ng-show="show_filter" class="ng-table-filters"> <th ng-repeat="column in $columns" ng-show="column.show(this)" class="filter"> <div ng-repeat="(name, filter) in column.filter"> <div ng-if="column.filterTemplateURL" ng-show="column.filterTemplateURL"> <div ng-include="column.filterTemplateURL"></div> </div> <div ng-if="!column.filterTemplateURL" ng-show="!column.filterTemplateURL"> <div ng-include="\'ng-table/filters/\' + filter + \'.html\'"></div> </div> </div> </th> </tr>'),
λ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€. 'sortable="'name'""μ 'data-sortable="'name'""μΌλ‘ λ°κΎΈμκ³ μλν©λλ€. μ΄κ² μ’ λ΄:
http://bit.ly/1BgfqTu
@faisalferoz μ μ κ·Ό λ°©μμ μ°λ¦¬μκ²λ
λ€μ @esvit μ΄κ²μ μ€μ λ‘ readmeμ μμ΄μΌ ν©λλ€. μ΄κ²μ νμ€ λ° λ§€μ° μΌλ°μ μΈ νλ‘λμ λΉλ λ¨κ³μμ λ²μ΄λλ μ€μν κΈ°λ₯μ λλ€.
@andreicristianpetcu μ μ κ·Ό λ°©μμ μ°λ¦¬μκ²λ ν¨κ³Όκ°
λΉμ μ λμ μμ μ λλ€. μ΄ μ루μ μ μ°Ύμ§ λͺ»νλ€λ©΄ μ΄ λ¬Έμ λ‘ λ¨μ μ λ μκ°μ 보λμ κ²μ΄λΌκ³ νμ ν©λλ€.
κ°μ¬ ν΄μ!!! μ΄κ²μ λλ₯Ό λ―ΈμΉκ² λ§λ€μλ€.
Gruntfileμμ collapseBooleanAttributes
λ₯Ό falseλ‘ λ³κ²½ν΄λ μ¬μ ν μ΄ λ¬Έμ κ° ν΄κ²°λ©λλ€. μ°Ύμμ£Όμ
μ κ°μ¬ν©λλ€.
@faisalferoz μ ν΄κ²° λ°©λ²μ +1.
μ€λμ΄ λ¬Έμ κ° λ°μνμ΅λλ€.
κ·Έλ°νΈ νμΌμ λ³κ²½ μ¬ν μμ collapseBooleanAttributes: true
μ΄κ²μ μ λ ¬νμ΅λλ€: sortable
=> data-sortable
Gruntfileμ htmlmin.dist.options
μμ collapseBooleanAttributes:
λ₯Ό false
λ‘ λ³κ²½νμ¬ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
μ€μ λ‘ λ κ°μ§ μμ
μ μνν΄μΌ νμ΅λλ€... collapseBooleanAttributes:
λ₯Ό false
λ³κ²½νκ³ μ½λλ <td data-title="'App score'" sortable="'gender'" >{{content.gender}}</td>
μμ <td sortable="'gender'" data-title="'App score'" >{{content.gender}}</td>
νμ¬ λ°μ΄ν° μ λ ¬λ§μΌλ‘ μμ
νμ΅λλ€. λλ₯Ό μν΄ μμ νμ§ μμμ΅λλ€ ...
@Jony-Y μ΄μν©λλ€. λ°λΌμ <td>
μμμμ ngTable μμ±μ μ§μ νλ μμλ₯Ό μ νν΄μΌ νμ΅λκΉ?
μ’μ, λ΄ λ¬Έμ λ ν΄κ²°νμ΅λλ€. κ°μ¬ ν΄μ!
λλ collapseBooleanAttributes: true
λ₯Ό false
λ‘ λ³κ²½νκ³ μ λ ¬ν μ μμ΅λλ€. κ°μ¬ν©λλ€.
λ μ루μ
λͺ¨λ μ μκ² ν¨κ³Όμ μ΄μμ΅λλ€.
κ·Έλ¬λ CSS λ¬Έμ λ λ°μνμ΅λλ€(μ λ ¬λμ§ μμ μ΄μ μμͺ½ νμ΄ν 2κ° μ°Έμ‘°).
λ€μ μ΅μ μ μ€μ νλ©΄ λ¬Έμ κ° ν΄κ²°λμμ΅λλ€.
cssmin: {
options: {
advanced: false
}
},
@andreicristianpetcu +1 μ μκ²λ ν¨κ³Όκ°
ν¨κ³Όκ° μμ΄μ λ€νμ λλ€ :D
λΆκ΄΄BooleanAttributesλ₯Ό λ³κ²½νλ©΄ λ΄ λ¬Έμ κ° ν΄κ²°λμμ΅λλ€.
data-sortableμ μ¬μ©νλ©΄ μ μκ² ν¨κ³Όμ μ΄μμ΅λλ€.
κ·Έλ°νΈ νμΌ μΆμBooleanAttributes: trueλ‘ λ³κ²½νλ©΄ 1μ΄ μμ λ€μ μλν©λλ€.
μ΄κ²μ μ ν λμμ΄λμ§ μμμ΅λλ€ : sortable => data-sortable
νμμν thx λ μλ€ ...
HTMLmin
λλ₯Ό μν΄ ν΄κ²°λμμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
μ κ²½μ°μλ jsminify λμμ΄ μλμμ΅λλ€. κ·Έλ¬λ htmlmin λμμ΄μμ΅λλ€.
collapseBooleanAttributes
λ₯Ό falseλ‘ λ³κ²½νλλ° λ¬Έμ κ° ν΄κ²°λμμ΅λλ€. λμμ μ 체 ꡬμ±μ λ€μκ³Ό κ°μ΅λλ€.