Объединение и минимизация в проектах ASP.Net Web API + AngularJS
У нас есть несколько проектов в нашей команде, но все они имеют одинаковую архитектуру, и недавно мы решили реализовать связывание и минимизацию во всех из них.
поэтому мы используем ASP.Net Web API вместе с AngularJS и не используем ASP.Net MVC, поэтому не используем Razor или.cshtml.
В нашей папке приложения, которую мы используем для хранения файлов AngularJS, у нас есть этот файл Index.html, в котором мы ссылаемся на наш файл load-js-css.js, у нас есть эта функция в load-js-css.js для загрузки файлов CSS рядом с App/main.js:
function loadcssfile(filename, filetype) {
if (filetype == "js") {
var fileref = document.createElement("script")
fileref.setAttribute("data-main", "App/main.js")
fileref.setAttribute("src", filename + "?v=" + version)
}
if (filetype == "css") {
var fileref = document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename + "?v=" + version)
}
if (typeof fileref != "undefined")
document.getElementsByTagName("head")[0].appendChild(fileref)
}
В main.js мы определяем наши пути, а также ссылку на app.js:
require.config({
baseUrl: "Scripts",
paths: {
'application': '/App/app',
'jquery.min': 'kendoUI/js/jquery.min',
'angular.min': 'kendoUI/js/angular.min',
.
.
.
.
'momentJalaali': { deps: ['jquery.min', 'angular.min', 'moment'] },
'pdfMakeLib': { exports: 'pdfMake' },
'pdfmake' : {deps: ['pdfMakeLib'], exports: 'pdfmake'}
},
urlArgs: "v=" + ((isDevelopment) ? (new Date()).getTime() : version),
waitSeconds: 0,
deps: ['application']
});
и наконец, в app.js мы определяем различные состояния со ссылкой на контроллеры AngularJS и HTML-файлы.
define(['angularAMD', 'angular-ui-route', 'ui-bootstrap', 'angular-sanitize', 'blockUI', 'animate', 'moment', 'momentJalaali', 'infoWindow', 'buttonValidation', 'textEmail', 'textNumeric', 'windowRedirect', 'dataService', "messageService", 'ncy-angular-breadcrumb', 'helperFactory'], function (angularAMD) {
"use strict";
var baseUrl = "App/views/", defaultOtherwise = 'default';
var app = angular.module("mainModule", ['ui.router', 'blockUI', 'ngSanitize', 'ui.bootstrap', 'ui.router.state', 'ncy-angular-breadcrumb'], ["$breadcrumbProvider", "blockUIConfig", "$stateProvider", "$urlRouterProvider", "$locationProvider", '$provide', function ($breadcrumbProvider, blockUIConfig, $stateProvider, $urlRouterProvider, $locationProvider, $provide) {
$provide.constant("defaultUrlOtherwise", defaultOtherwise);
$breadcrumbProvider.setOptions({
prefixStateName: 'home',
templateUrl: 'App/template/breadcrumb.html',
});
.
.
.
.
.state('login', angularAMD.route({
url: '/login',
controllerUrl: baseUrl + 'security/login/loginController.js',
views: {
'login': {
templateUrl: baseUrl + 'security/login/login.html',
}
},
}))
.
.
.
.
так что уже больше недели я ищу хороший способ включить пакетирование в наших проектах, но не могу найти хорошую практику, подходящую для наших проектов. Есть ли хороший способ сделать пакетирование для проектов Web API + AngularJS?
А также мы не можем использовать.cshtml в нашем проекте, и без @Render.Scripts мы должны использовать теги, которые, я думаю, будут проблемой из-за кэширования.