我開發了一個AngularJS應用程序,並且希望在一個.html文件中有全部來源。
我使用grunt
作爲構建系統。
我使用的模板ngtemplates
非AngularJS應用程序有可能通過concat
+ processhtml
「gun」任務進行「編譯」。
如果我嘗試使用angular-app來做,頁面會顯示一些js文件的內容。
是否有可能只保存一個html文件?
如果是的話,表現出一定的例子,請簡單AngularApp + Gruntfile.js如何在一個html文件中「編譯」一個AngularJS應用程序,並保持內聯所有源。 (grunt)
1
A
回答
0
OK,問題是在angular.js文件中的註釋。 AngularJS文件通過示例進行了評論,其中包含<script>..</script>
部分。如果您在內嵌的html文件中插入這樣的示例,則<script>
標記中的註釋示例中的結束標記將關閉原始腳本標記。
例如
<script> <---- original script tag
/**
* example comment.
* use in this way:
* <script>example()</script> <---- this will close original tag, and broke js in your html
*/
</script>
所以我用uglifyjs到刪除所有評論,使JS較小。這修復了問題。
我咕嚕任務看起來是這樣的:
grunt.registerTask('onefile', ['ngtemplates', 'useminPrepare', 'concat:generated', 'uglify:generated', 'cssmin:generated', 'usemin', 'processhtml']);
在HTML文件以這樣的方式說:
<!-- process:css inline -->
<!-- build:css styles.min.css -->
<link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.css">
<link rel="stylesheet" href="app.css">
<!-- endbuild -->
<!-- /process -->
....
<!-- process:js inline -->
<!-- build:js app.min.js -->
<!-- bower:js -->
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-route/angular-route.js"></script>
<!-- endbower -->
<script src="main-table/main-table.js"></script>
<script src="app.js"></script>
<script src="templates.js"></script>
<!-- endbuild -->
<!-- /process -->
<!-- process:css inline -->
是processhtml,使所有代碼內聯。
processhtml使用與usemin commentmarker衝突的默認commentMarker build
。
要與usemin使用它,在processhtml
任務定義commentMarker
,如:
processhtml: {
options: {
commentMarker: 'process'
}
}
而且可以肯定,角碼應該能夠被精縮,像Lior Ben Aharon評論。
我用它ngAnnotate。
0
的你可以試試這個咕嚕模塊https://github.com/ericclemmons/grunt-angular-templates
我從來沒有使用過,但也許能滿足您的需求。
1
我知道如何將一堆js文件合併爲一個。 事件雖然很容易縮小這些文件,但您需要將它們縮小。這意味着你應該使用$ injector聲明函數,這樣它就可以作爲一個縮小文件「可讀」。
瞭解一些所謂的大口..
angular
.module("module")
.controller("ctrl",[
"$scope",//This is a standard declaration to make a file minifiable.
function($scope){}
]);
相關問題
- 1. 如何使一個asp.net mvc應用程序保持編譯
- 2. 使用SSI或grunt將所有shtml文件編譯爲一個html文件
- 3. 如何使用grunt將所有.js文件編譯成一個縮小文件?
- 4. 如何保持一個應用程序
- 5. 在c#應用程序中編譯一個ccs腳本文件
- 6. 如何在另一個引導另一個angularjs應用程序?
- 7. 如何在域中託管一個angularjs應用程序
- 8. 如何編輯一個html文件並使其影響所有其他文件?
- 9. 壓縮與谷歌關閉編譯應用程序的所有文件的.js在一個文件中
- 10. 如何將所有dll合併爲一個應用程序?
- 11. 如何預編譯除一個以外的所有Javascript文件?
- 12. 可可編譯的應用程序資源保持文件夾結構?
- 13. grunt-include-replace在編譯時添加一個文件夾
- 14. Grunt uglify所有.js文件到一個文件中
- 15. Java程序保持扔了一個錯誤,而編譯
- 16. 使用grunt-json-bake將多個json文件編譯成一個文件
- 17. 如何讓Less2css編譯所有文件一旦保存少文件之一?
- 18. AngularJS查詢資源一次,並在整個應用程序中使用數據
- 19. 我如何使用window_onload從一個html應用程序打開一個文件
- 20. 如何編譯使用源頭文件的應用程序?
- 21. 如何保持我的所有Django應用程序在特定文件夾中
- 22. 如何設置一個grunt文件來觀察和編譯較少的文件
- 23. HTML「編譯器」/合併應用程序
- 24. 如何讓一個AngularJS應用程序影響另一個?
- 25. 在另一個HTML文件中使用flex web應用程序
- 26. 應用程序可以編譯並創建另一個應用程序嗎?
- 27. 如何僅在應用程序內部保留一個窗口?
- 28. 如何使用Babel將所有包含的文件編譯成一個文件?
- 29. 如何從一個HTML文件中使用Angularjs NG綁定,HTML
- 30. Wpf在一個文件中堅持應用程序項目