【问题标题】:Netsuite suitelet responsive UI, sitebuilder bundlingNetsuite 套件响应式 UI,站点构建器捆绑
【发布时间】:2020-04-22 08:58:05
【问题描述】:

我想知道是否有人知道如何使套件响应?我相信 netsuite(不是 sitebulider 和 suitecommerce)没有/不支持响应式 UI。有没有办法让它在没有“黑客攻击”的情况下做出响应?另一个问题是你可以捆绑在sitebuilder中创建的网站吗?

【问题讨论】:

    标签: javascript responsive-design netsuite suitescript2.0


    【解决方案1】:

    您对 NetSuite CSS 并没有太多控制权,但 Suitelet 可以输出原始 HTML/CSS,并且不必使用标准的 NetSuite UI。有了这些信息,您可以走极端路线来构建 React 或 Angular 应用程序并从您的 Suitelet 运行它。因为它作为 Suitelet 运行,所以您可以使用 RESTlet(在同一个会话中,因此不需要额外的身份验证)从 React 应用程序获取所有数据。

    这为您提供了两全其美、完全自定义(响应式)用户界面以及将数据存储在 NetSuite 中的所有好处。

    /**
     * Suitelet for React frontend
     * @NApiVersion 2.1
     * @NModuleScope Public
     * @NScriptType Suitelet
     */
    define([
        'N/log',
        'N/search',
    ], function (log, search) {
        function onRequest(context) {
            const appInfo = {
                title: 'Application Title',
                cssFile: getFileUrl('react.app.css'),
                jsFile: getFileUrl('react.app.js'),
            };
    
            const html = `<!doctype html>
                           <html lang="en">
                               <head>
                                   <link rel="stylesheet" type="text/css" href="${appInfo.cssFile}">
                                   <meta charset="utf-8">
                                   <title>${appInfo.title}</title>
                                   <script>window.appTitle = ${appInfo.title};</script>
                               </head>
                               <body id="body">
                                   <div id="app-site"></div>
                               </body>
                               <script src="${appInfo.jsFile}"></script>
                           </html>`;
    
            context.response.write({ output: html });
        }
    
        //////////////////////////////////////////////////////////
    
        function getFileUrl(filename) {
            const results = search.create({
                type: 'file',
                filters: [['name', 'is', filename]],
                columns: ['url']
            }).run().getRange({ start: 0, end: 1 });
    
            if (results && results.length > 0) {
                return results[0].getValue({ name: 'url' });
            }
    
            return '#';
        }
    
        return {
            onRequest
        };
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多