将 CDNJS 与 LibMan 结合使用 Moment.JS
Using CDNJS with LibMan for Moment.JS
我现在正在尝试进入 Asp.Net Core 2.2 MVC。
由于来自 DevExpress 日期时间选择器的值,我想使用 moment.js 库进行一些日期计算。我已经能够根据以下 instructions 使用 "libman.json":
包含它
{
"provider": "cdnjs",
"library": "moment.js@2.23.0",
"destination": "wwwroot/lib/moment.js/",
"files": [
"moment-with-locales.min.js",
"locale/de.js"
]
}
*.js 文件可用。
但是,类型或工厂 'moment()' 不能按照页面 https://momentjs.com/docs/ 中的描述使用(也没有 MVC 的特殊示例)。它不存在。
我也尝试过使用 nuget 'Moment.js',但也无法引用它。
我在我的 *.cshtml 中尝试过类似的东西......但那更 Angular 而不是 MVC,不是吗?
@section 脚本 {
<script>
import $ from jquery;
import moment from moment;
const m = moment();
function dateDiff(secondDate) {
//var a = moment([2008, 9]);
//var b = moment([2007, 0]);
//a.diff(b, 'years');
return $("#age").text("" + " years");
}
</script>
}
我无法访问 moment.js 类型。
我需要做什么?我做错了什么?
提前致谢!亲切的问候。
在使用moment
之前,您需要引用它。
短期使用,您可以尝试如下:
@section Scripts{
<script src="~/lib/moment.js/moment-with-locales.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var now = moment();
alert(now);
var a = moment([2008, 9]);
var b = moment([2007, 0]);
alert(a.diff(b, 'years'));
});
</script>
}
您也可以通过 _Layout.cshtml
在全局注册 moment
。
<!DOCTYPE html>
<html>
//rest code
<environment include="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
</environment>
<environment exclude="Development">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-test="window.jQuery"
crossorigin="anonymous"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/js/bootstrap.bundle.min.js"
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"
crossorigin="anonymous"
integrity="sha256-E/V4cWE4qvAeO5MOhjtGtqDzPndRO1LBk8lJ/PR7CA4=">
</script>
</environment>
<script src="~/js/site.js" asp-append-version="true"></script>
<script src="~/lib/moment.js/moment-with-locales.min.js"></script>
@RenderSection("Scripts", required: false)
</body>
</html>
@Tao Zhou - 非常感谢您的回答。
当然,我试图 reference/register 它在我的 _layout.cshtml.
问题出在其他地方...我已经将 DevExpress 的 CodeRush 作为 IntelliSense 进行了测试......
对于 JavaScript,此 IntelliSense 似乎无法识别 moment.js 的类型,并且可能无法识别任何类型的 js。
所以我以为引用不行,其实只是IDE扩展的问题!
那么 ReSharper...我们又来了:)
我现在正在尝试进入 Asp.Net Core 2.2 MVC。 由于来自 DevExpress 日期时间选择器的值,我想使用 moment.js 库进行一些日期计算。我已经能够根据以下 instructions 使用 "libman.json":
包含它{
"provider": "cdnjs",
"library": "moment.js@2.23.0",
"destination": "wwwroot/lib/moment.js/",
"files": [
"moment-with-locales.min.js",
"locale/de.js"
]
}
*.js 文件可用。
但是,类型或工厂 'moment()' 不能按照页面 https://momentjs.com/docs/ 中的描述使用(也没有 MVC 的特殊示例)。它不存在。 我也尝试过使用 nuget 'Moment.js',但也无法引用它。
我在我的 *.cshtml 中尝试过类似的东西......但那更 Angular 而不是 MVC,不是吗?
@section 脚本 {
<script>
import $ from jquery;
import moment from moment;
const m = moment();
function dateDiff(secondDate) {
//var a = moment([2008, 9]);
//var b = moment([2007, 0]);
//a.diff(b, 'years');
return $("#age").text("" + " years");
}
</script>
}
我无法访问 moment.js 类型。 我需要做什么?我做错了什么?
提前致谢!亲切的问候。
在使用moment
之前,您需要引用它。
短期使用,您可以尝试如下:
@section Scripts{
<script src="~/lib/moment.js/moment-with-locales.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
var now = moment();
alert(now);
var a = moment([2008, 9]);
var b = moment([2007, 0]);
alert(a.diff(b, 'years'));
});
</script>
}
您也可以通过 _Layout.cshtml
在全局注册 moment
。
<!DOCTYPE html>
<html>
//rest code
<environment include="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
</environment>
<environment exclude="Development">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"
asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-test="window.jQuery"
crossorigin="anonymous"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/js/bootstrap.bundle.min.js"
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"
crossorigin="anonymous"
integrity="sha256-E/V4cWE4qvAeO5MOhjtGtqDzPndRO1LBk8lJ/PR7CA4=">
</script>
</environment>
<script src="~/js/site.js" asp-append-version="true"></script>
<script src="~/lib/moment.js/moment-with-locales.min.js"></script>
@RenderSection("Scripts", required: false)
</body>
</html>
@Tao Zhou - 非常感谢您的回答。 当然,我试图 reference/register 它在我的 _layout.cshtml.
问题出在其他地方...我已经将 DevExpress 的 CodeRush 作为 IntelliSense 进行了测试...... 对于 JavaScript,此 IntelliSense 似乎无法识别 moment.js 的类型,并且可能无法识别任何类型的 js。 所以我以为引用不行,其实只是IDE扩展的问题!
那么 ReSharper...我们又来了:)