热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sails.js使用不同的布局和不同的js库

如何解决《sails.js使用不同的布局和不同的js库》经验,为你挑选了1个好方法。

我正在创建我的第一个nodejs/sails.js项目,我想在3种不同的场合使用3种不同的布局:

frontend_layout.ejs
admin_layout.ejs
mobile_layout.ejs

在frontend_layout.ejs中,我想加载bootstrap.css,jquery.js和bootstrap.js.

在admin_layout.ejs中,我想加载bootstrap.css,angular.js和ui-bootstrap-tpls.js(angular-ui js library).

在mobile_layout.ejs中,我想加载ionic.css和ionic.bundle.js

我在sailsProject/views /中创建了3个文件夹,分别是admin_pages,mobile_pages和frontend_pages,3个layout.ejs文件分别驻留在每个文件夹中,但无论我加载哪个布局,它总是包含所有css/js文件资产/资产和资产/风格.我知道我需要对pipeline.js做些什么,但究竟是怎么回事?我对grunt没有效率,所以如果有人能指出我需要修改哪些配置文件以及如何...我真的很感激...谢谢!



1> JFar..:

我希望在我的项目中有类似的东西,除了我还想利用Sail的酷内置功能来自动最小化/ uglify Javascript文件"sails lift --prod"在各种布局中使用不同的Javascript文件集.此答案仅处理JS文件,但您可以进行类似的更改以支持与CSS文件相同的概念.

在我的项目中,我有两种不同的布局 - layout.ejs和layoutadmin.ejs.我创建了一个新的/ assets/jsadmin文件夹,其中包含我的管理员Javascript文件.我保留了sails现有的/ assets/js文件夹,用于保存公共网页的Javascript文件.

我的目标是在这些标签之间插入/ assets/js文件夹内容(默认情况下这样做,并且这些标签在layout.ejs文件中使用):


虽然要在这些标记之间插入/ assets/jsadmin文件夹内容(我编写了这些"自定义"标记名称,并且它们在layoutadmin.ejs文件中使用.我将在此其余部分添加对此新标记的添加支持回答):


我在这里创建了一个完整的代码示例演示.

对于开发...... (风帆升降机),我进行了修改,所以风帆会在提升时使用assets/jsadmin js文件填充我的自定义标签.

我通过添加一个名为jsAdminFilesToInject的新变量来修改tasks/pipeline.js,这个变量与现有的jsFilesToInject非常相似,只不过它从jsAdmin文件夹中收集js文件.

var jsAdminFilesToInject = [

  // Load sails.io before everything else
  //'jsAdmin/dependencies/sails.io.js',

  // Dependencies like jQuery, or Angular are brought in here
  'jsAdmin/dependencies/**/*.js',

  // All of the rest of your client-side js files
  // will be injected here in no particular order.
  'jsAdmin/**/*.js'
];

注意:我还必须在pipeline.js文件的底部导出这个新变量.

module.exports.jsAdminFilesToInject = jsAdminFilesToInject.map(function(path) {
  return '.tmp/public/' + path;
});

我通过添加一个新的devJsAdmin任务来修改tasks/config/sails-linker.js,它在其中查找标签并调用上面的pipeline.js文件中添加的新的.jsAdminFilesToInject.

    devJsAdmin: {
        options: {
            startTag: '',
            endTag: '',
            fileTmpl: '',
            appRoot: '.tmp/public'
        },
        files: {
            '.tmp/public/**/*.html': require('../pipeline').jsAdminFilesToInject,
            'views/**/*.html': require('../pipeline').jsAdminFilesToInject,
            'views/**/*.ejs': require('../pipeline').jsAdminFilesToInject
        }
    },

我在tasks/register/linkAssets.js文件中添加了一个新任务步骤,该文件调用上面添加的devJsAdmin.

    'sails-linker:devJsAdmin',

要测试,请在演示模式下运行sails:

sails lift

浏览到http:// localhost:1337/home - 您将看到它正在使用layout.ejs模板,查看源代码将在底部显示以下内容(从js文件夹中提取的文件):




浏览到http:// localhost:1337/admin - 您将看到它正在使用layoutadmin.ejs模板,查看源将在源代码底部显示以下内容(从jsAdmin文件夹中提取的文件):




对于生产... (sails lift --prod),我想做同样的开发,除了我首先想要连接和uglify我的新SCRIPTS_ADMIN标签中的生产Javascript.

我在grunt tasks/config/concat.js文件中添加了一个新的jsAdmin部分,该部分从之前添加的pipeline.js中的jsAdminFilesToInject中提取文件,以生成concat/productionAdmin.js输出文件.

    jsAdmin: {
        src: require('../pipeline').jsAdminFilesToInject,
        dest: '.tmp/public/concat/productionAdmin.js'
    },

我在grunt tasks/config/uglify.js文件中添加了一个新的distAdmin部分,它通过生成一个新的min/productionAdmin.min.js文件使concat/productionAdmin.js"丑陋".

    distAdmin: {
        src: ['.tmp/public/concat/productionAdmin.js'],
        dest: '.tmp/public/min/productionAdmin.min.js'
    }

我在tasks/config/sails-linker.js文件中添加了一个新的prodJSAdmin部分,该文件在SCRIPTS_ADMIN标记之间添加了min/productionAdmin.min.js文件.

    prodJsAdmin: {
        options: {
            startTag: '',
            endTag: '',
            fileTmpl: '',
            appRoot: '.tmp/public'
        },
        files: {
            '.tmp/public/**/*.html': ['.tmp/public/min/productionAdmin.min.js'],
            'views/**/*.html': ['.tmp/public/min/productionAdmin.min.js'],
            'views/**/*.ejs': ['.tmp/public/min/productionAdmin.min.js']
        }
    },

最后,我通过在prod.js文件中添加一行来从prod grunt任务调用这个新的prodJSAdmin.

    'sails-linker:prodJsAdmin',

在生产模式下运行风帆:

sails lift --prod

浏览到http:// localhost:1337/home - 您将看到它正在使用布局模板,查看源将在底部显示以下内容(使用production.min.js):



浏览到http:// localhost:1337/admin - 您将看到它正在使用layoutadmin.ejs模板,查看源代码将在源代码底部显示以下内容(使用productionAdmin.min.js):




推荐阅读
  • Vue项目结构分析-项目结构重点在src文件夹:assets——静态资源,如css,jscomponents——公共组件router——路由文件(vuecli3.x没有自 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 前端微服务二
    为了解决庞大的一整块后端服务带来的变更与扩展方面的限制,出现了微服务架构(Microservices):微服务是面向服务架构(SOA)的一种变体,把应用程序设计成一系列松耦合的细粒 ... [详细]
  • 最近在做一个大屏项目,有一个需求视频做背景,这个在vue开发的时候做了很多遍了,以为手到擒来。背景分析前端框架:UMIved ... [详细]
  • 织梦DedeCMSckeditor编辑器通过修改js去除img标签内的width和height样式
    1.找到文件\include\ckeditor\plugins\image\dialogs\image.js2.使用工具美化js代码3.搜索setStyle(width,CKEDI ... [详细]
  • 十一、构建我们自己的包在本章中,我们将学习如何构建自己的包。编写包可以让我们创建可以在许多应用 ... [详细]
  • Vue开发实例目录总索引
    作者简介作者名:编程界明世隐简介:CSDN博客专家,从事软件开发多年,精通Java、JavaScript,博主 ... [详细]
  • 写在前面GitDataV,是一个github“大数据可视化平台”,通过它你可以更直观的看到你在github里的一些数据,(之所以打双引号& ... [详细]
  • vue组件component的注册与使用详解_vue.js
    组件是Vue是一个可以重复使用的Vue实例, 它拥有独一无二的组件名称,它可以扩展HTML元素,以组件名称的方式作为自定义的HTML标签,这篇文章主要介绍了vue组件compone ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • 本文介绍了JavaScript进化到TypeScript的历史和背景,解释了TypeScript相对于JavaScript的优势和特点。作者分享了自己对TypeScript的观察和认识,并提到了在项目开发中使用TypeScript的好处。最后,作者表示对TypeScript进行尝试和探索的态度。 ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • npmrunbuild后dist文件夹下面直接浏览器打开index.html,css和js的路径都不正确。放到跟目录下就正常了,iis上同样只能在根目录下。我项目的目录如下: ... [详细]
  • 本文整理了Java中org.dataconservancy.ui.model.DataItem.getFiles()方法的一些代码示例,展示了DataIte ... [详细]
author-avatar
手机用户2502927925
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有