パフォーマンス

このサンプルでは、InputManJSで高速にコントロールを生成することを確認できます。

InputManJSでは、すべてのコントロールがパフォーマンスとファイルサイズの観点から最適化され、ページ上に多数のコントロールが存在しても、軽量かつ高速な操作性を提供します。 コントロールの種類と生成する数を指定して、その高速なパフォーマンスを確認してください。
import '@mescius/inputman/CSS/gc.inputman-js.css'; import './styles.css'; import { InputMan } from '@mescius/inputman'; import products from './data'; InputMan.appearanceStyle = InputMan.AppearanceStyle.Modern; const controlType = document.getElementById('controlType'); const controlCount = document.getElementById('controlCount'); document.getElementById('performance_btn').addEventListener('click', () => { let container = document.getElementById('container'); while (container.hasChildNodes()) { container.removeChild(container.lastChild); } let count = Number(controlCount.value); for (let i = 0; i < count; i++) { var tagName = controlType.selectedIndex == 1 ? 'textarea' : controlType.selectedIndex <= 4 ? 'input' : controlType.selectedIndex >= 6 ? 'select' : 'div'; let element = document.createElement(tagName); container.appendChild(element); switch (controlType.selectedIndex) { case 0: new InputMan.GcTextBox(element); break; case 1: new InputMan.GcMultiLineTextBox(element); break; case 2: let gcMask = new InputMan.GcMask(element, { formatPattern: '〒\\D{3}-\\D{4}' }); break; case 3: new InputMan.GcDateTime(element); break; case 4: new InputMan.GcNumber(element); break; case 5: new InputMan.GcCalendar(element); break; case 6: new InputMan.GcComboBox(element, { items: products }); break; case 7: new InputMan.GcListBox(element, { items: products }); break; } } });
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>基本機能 - パフォーマンス</title> <!-- SystemJS --> <script src="node_modules/systemjs/dist/system.src.js"></script> <script src="systemjs.config.js"></script> <script> window.onload = function() { System.import('./src/app'); } </script> </head> <body> <button id="performance_btn">コントロールを生成</button> <table class="sample"> <tr> <th>コントロールの種類</th> <td> <select id="controlType"> <option>テキストコントロール</option> <option>複数行テキストコントロール</option> <option>マスクコントロール</option> <option>日付時刻コントロール</option> <option>数値コントロール</option> <option>カレンダーコントロール</option> <option>コンボコントロール</option> <option>リストコントロール</option> </select> </td> </tr> <tr> <th>コントロールの数</th> <td> <select id="controlCount"> <option>100</option> <option>1000</option> </select> </td> </tr> </table> <div id="container"></div> </body> </html>
body { height: 30rem; } #container { display: flex; flex-wrap: wrap; }
module.exports = [ '果汁100%オレンジ', 'コーヒーマイルド', 'ピリピリビール', 'ホワイトソルト', 'ブラックペッパー', 'ピュアシュガー' ];
body { height: 30rem; } [gcim-control-appearance="modern"] #container { display: flex; flex-wrap: wrap; }
System.config({ transpiler: 'plugin-babel', babelOptions: { es2015: true }, meta: { '*.css': { loader: 'css' } }, paths: { // paths serve as alias 'npm:': 'node_modules/' }, // map tells the System loader where to look for things map: { '@mescius/inputman': 'npm:@mescius/inputman/index.js', '@mescius/inputman/CSS': 'npm:@mescius/inputman/CSS', 'css': 'npm:systemjs-plugin-css/css.js', 'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js', 'systemjs-babel-build': 'npm:systemjs-plugin-babel/systemjs-babel-browser.js' }, // packages tells the System loader how to load when no filename and/or no extension packages: { src: { defaultExtension: 'js' }, "node_modules": { defaultExtension: 'js' }, } });