【发布时间】:2020-04-22 08:58:05
【问题描述】:
我想知道是否有人知道如何使套件响应?我相信 netsuite(不是 sitebulider 和 suitecommerce)没有/不支持响应式 UI。有没有办法让它在没有“黑客攻击”的情况下做出响应?另一个问题是你可以捆绑在sitebuilder中创建的网站吗?
【问题讨论】:
标签: javascript responsive-design netsuite suitescript2.0
我想知道是否有人知道如何使套件响应?我相信 netsuite(不是 sitebulider 和 suitecommerce)没有/不支持响应式 UI。有没有办法让它在没有“黑客攻击”的情况下做出响应?另一个问题是你可以捆绑在sitebuilder中创建的网站吗?
【问题讨论】:
标签: javascript responsive-design netsuite suitescript2.0
您对 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
};
});
【讨论】: