我正在使用asp.net捆绑/缩小并将所有内容放在bundle.config中,如下所示:
<styleBundle path="~/css/css">
<include path="~/css/bootstrap.css" />
<include path="~/css/flexslider.css" />
<include path="~/css/font-awesome.css" />
<include path="~/css/Site.css" />
<include path="~/css/orange.css" />
</styleBundle>
Run Code Online (Sandbox Code Playgroud)
但是我想从CDN使用bootstrap.css:
//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css
Run Code Online (Sandbox Code Playgroud)
那么我们怎么能在bundle.config中做到这一点呢?
我有一个现有的Web表单项目,现在使用.net 4.5.
使用nuget我添加了对system.web.omtimization的引用.
然后,我放在标题中,并尝试靠近我的页脚:
<%: Scripts.Render("~/Scripts/CaseReview") %>
Run Code Online (Sandbox Code Playgroud)
我还将以下内容添加到global.asax:
BundleConfig.RegisterBundles(BundleTable.Bundles);
Run Code Online (Sandbox Code Playgroud)
我得到:当前上下文中不存在"脚本"这个名称
我可以使用捆绑webforms是吗?
如果是这样我做错了什么/不做什么?
使用mvc4课程的捆绑功能
未捕获的SyntaxError:意外的令牌<
在装载.随着debug="true"一切作品就像除外.
如何解决错误或者我是否可以仅针对脚本禁用捆绑功能?
已解决
重命名捆绑包名称与任何目录不匹配
我读过一些人说如果你结合然后缩小会有问题,你应该总是缩小然后合并(参见例如关于这个问题的评论.)但是,我从未见过这些问题的例子我自己是或是遇到过他们.我也找不到YUI开发人员的任何官方说明最佳做法.
我有一个部署到Azure的MVC4项目.捆绑和缩小工作绝对正常.
所有脚本文件都在/ js文件夹中,这些文件夹捆绑在/ scripts/js中
当我使用msdeploy发布到Azure时,我希望只部署捆绑/缩小的脚本文件.我不希望任何人通过猜测网址来访问我的未缩小的脚本.
我理解MVC捆绑在运行时发生,因此它需要非捆绑文件即时创建捆绑包.这可能需要像grunt那样自动化吗?
想知道当你不想发布非捆绑的js时,人们在这种情况下使用的部署策略.
asp.net asp.net-mvc azure asp.net-mvc-4 bundling-and-minification
捆绑有什么区别:
bundles.Add(new ScriptBundle("~/bundles/jquery")
.Include("~/Scripts/jquery-{version}.js","file2.js", "file3.js"));
Run Code Online (Sandbox Code Playgroud)
VS
bundles.Add(new ScriptBundle("~/bundles/jquery")
.Include("~/Scripts/jquery-{version}.js")
.Include("file2.js")
.Include("file3.js"));
Run Code Online (Sandbox Code Playgroud)
我可以在ONE include方法中放入许多脚本,或者我可以使用许多include方法.
我什么时候应该用什么?
我们正在使用Durandal构建一个应用程序,目前这个应用程序非常庞大,我们目前正在考虑将位于App文件夹中的所有JS文件捆绑到main-built.js文件中.我猜是非常基本和平常的东西.
我正在使用Gulp和Gulp-Durandal扩展.这里是我们的gulpfile:
var gulp = require('gulp');
var durandal = require('gulp-durandal');
gulp.task('build-portal', function () {
durandal({
baseDir: 'app',
main: 'main.js',
output: 'main-built.js',
almond: false,
minify: false
}).pipe(gulp.dest('app'));
});
Run Code Online (Sandbox Code Playgroud)
这是我们的main.js文件的片段
require.config({
paths: {
'text': '../Scripts/text',
'durandal': '../Scripts/durandal',
'plugins': '../Scripts/durandal/plugins',
'transitions': '../Scripts/durandal/transitions'
},
shim: {
},
waitSeconds: 0
});
define('jquery', [], function () { return jQuery; });
define('knockout', [], function () { return ko; });
define('ga', function () { return ga; });
define(
["require", "exports", "durandal/app", "durandal/viewLocator", "durandal/system", "plugins/router", "services/logger", "modules/knockout.extensions", "modules/knockout.validation.custom"],
function …Run Code Online (Sandbox Code Playgroud) 根据发布模式下的文档,bundler应该使用.min.js文件(如果存在).我通过以下方式添加角度:
bundles.Add(new ScriptBundle(Bundles.Scripts).Include(
"~/Content/Scripts/angular.js"));
Run Code Online (Sandbox Code Playgroud)
我在同一个文件夹中有angular.js和angular.min.js.所以根据我的理解,bundler应该只使用angular.min.js并且不做任何事情.但是当我在http响应中检查结果时,它会有所不同.它也缩小了,但所有的名字都不同:
我在浏览器中得到的内容:
(function(n,t,i){"use strict";function v(n)
Run Code Online (Sandbox Code Playgroud)
Angular.min.js
(function(P,X,u){'use strict';function M(b)
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么会这样吗?捆绑器是否只是忽略.min文件或者再次缩小.min.js?
PS我试图删除angular.js文件,然后我得到一个空的结果,所以看起来捆绑器根本不关心angular.min.js存在.
我的项目有多个JS-Files,其中包含不进行任何导出的函数声明,并使用jquery,jquery-ui和其他需要全局访问的库。函数通常由html元素()中的内联JavaScript调用<button onclick="doStuff()">...
我现在的目标是将应用程序文件捆绑到bundle.js中,将供应商文件捆绑到vendor.js中。我已经设法完成了第二项任务,但是第一个任务没有按我希望的那样工作。
bundle.js文件应仅包含所有已串联+缩小的.js文件,然后在全局上下文中执行。
到目前为止我尝试过的是:
为了便于讨论,我给出了一个简化的方案:
function doStuffA() {
alert("A");
}
Run Code Online (Sandbox Code Playgroud)
function doStuffB() {
alert("B");
}
Run Code Online (Sandbox Code Playgroud)
require("script!./a");
require("script!./b");
Run Code Online (Sandbox Code Playgroud)
<body>
<button onclick="doStuffA()">A</button>
<button onclick="doStuffB()">B</button>
<script src="bundle.js"></script>
<script src="vendor.js"></script>
</body>
Run Code Online (Sandbox Code Playgroud)
var webpack = require("webpack");
module.exports = {
entry: {
app: "./src/index.js",
vendor: [
"jquery",
"jquery-ui"
]
},
output: {
path: __dirname,
filename: "bundle.js"
},
module: {
loaders: [
{test: /\.json$/, loader: "json"}, …Run Code Online (Sandbox Code Playgroud) 在捆绑的生产构建中,我看到一个网络请求:systemjs-plugin-babel@0.0.21.json来自缓存 ...在同一个实例上,它无法完全加载到我的应用程序.
它无法加载从http:// thehost/myapp/jspm_packages/npm路由的任何内容
我的理解是,在捆绑的JSPM模块中,它不应该从这种路由加载,因为所有内容都捆绑到build.js文件中.
我目前使用以下gulp任务捆绑我的应用程序:
gulp.task('jspm-bundle', plugins.shell.task([
'node node_modules/jspm/jspm.js bundle myapp/index.jsx' +
' + myapp/things/**/*.jsx + myapp/otherthings/**/*.jsx' +
' + systemjs-plugin-babel + babel-preset-stage-0 + transform-react-jsx' +
' + transform-decorators-legacy' +
' --minify --skip-source-maps'
])
Run Code Online (Sandbox Code Playgroud)
我不知道从哪里开始...有人能告诉我为什么捆绑的应用程序甚至会尝试向浏览器发出这种请求的原因吗?
更新1:
有一次,我们看到一个承诺拒绝似乎与这个单一的客户有关:
Unhandled promise rejection Error: Syntax Error
Instantiating http://myhost/myapp/jspm_packages/npm/systemjs-plugin-babel@0.0.21.json
Loading http://myhost/myapp/jspm_packages/npm/systemjs-plugin-babel@0.0.21.json
Unable to fetch package configuration file http://myhost/myapp/jspm_packages/npm/systemjs-plugin-babel@0.0.21.json
Resolving plugin-babel to http://myhost/myapp/app/index.jsx
Resolving myapp/index.jsx
Loading myapp/index.jsx
Run Code Online (Sandbox Code Playgroud)
更新2:
我的FULL SystemJS配置:https://pastebin.com/aJFPqNGn
更新3(上次更新?):
如果我从'npm:systemjs-plugin-babel'明确导入,我可以在生产中重新创建问题,但我无法解释为什么在客户端安装的生产中会发生这种导入.发生语法错误是因为对不存在的文件的请求返回登录html并且在html中的第一个'<'上发生语法错误