Ctrip CRN Исходный код Детальный распаковщик (4) — Бизнес-упаковка
1, бизнес пакет
В дополнение к коду, содержащему бизнес-логику в RN_Common, он будет преобразован CRN. CRN хочет сделать бизнес-пакет по мере необходимости для загрузки, поэтому CRN использует функцию Rambundle, что там метро было. Rambundle Rambundle, прежде чем этот метод упаковки может рассеять пучок в несколько отдельных файлов JS. При загрузке страницы будет загружена только требуемые файлы JS только, что значительно повышает скорость загрузки страницы.
2, упакованная команда
cmd = ‘node node_modules/react-native/cli.js ram-bundle —config rn-cli.config.js ‘ + buildCommand + ‘ —assets-dest bundle_output/publish’; logOutPut.log(cmd); execSync(cmd, < stdio: ‘inherit’ >);
Здесь он четко определен с использованием метода RAM-Bundle для упаковки, а комплект, который используется RN_Common, имеет существенную разницу.
3, отфильтровать rn_common
Ram-Bundle IOS — это целая проблема, чтобы унифицировать Android, CRN изменяет Rambundle.js
Как оплатить БИЗНЕС-пакет ГИФТ-КОДОМ?
//RamBundle.js function save(bundle, options, log) < //CRN BEGIN // обрабатывать упаковку iOS в многофункциональные цели return asAssets(bundle, options, log); //CRN END //ORIGINAL: //return options.platform === ‘android’ !options.indexedRamBundle // ? asAssets(bundle, options, log) // : asIndexedFile(bundle, options, log); //ORIGINAL-END >
Если фильтрация, напишите метод записи файла записи для AS-Assets.js
//as-assets.js function writeModuleFile(module, modulesDir, encoding) < const code = module.code, // CRN начать выходной модуль в общей упаковке if (id < 666666) < return Promise.resolve(); >//CRN END return writeFile(path.join(modulesDir, id + «.js»), code, encoding); >
До тех пор, пока идентификатор меньше 666666, он отфильтрован, который отфильтровывается, — это содержимое RN_Common, поскольку идентификатор модуля RN_Common начинается от 0, и как вы полагаетесь на модуль, вы не можете получить 666666. Идентификатор бизнеса начинается с 666666, поэтому фильтрованный файл JS является файлом бизнес-модуля.
4, Загрузка файла ресурсов
Вышеуказанные шаги завершили упаковку, включая ресурсы, поскольку логика упаковки ресурсов не должна быть изменена, другими словами: не фильтруйте ресурсы RN_Common при воспроизведении бизнес-пакетов, потому что RN_Common в рамках CRN не имеет ресурсов. Загрузка документов ресурсов должна быть изменена.
Чтобы сделать Android и iOS, используйте единый файл ресурсов, оригинал изменен на тот же пакет ресурсов, то есть изменен на формат ресурсов iOS.
//AssetSourceResolver.js defaultAsset(): ResolvedAssetSource < if (this.isLoadedFromServer()) < return this.assetServerURL(); >//CRN BEGIN // Загрузка ресурсов iOS и Android остаются едиными // if (Platform.OS === ‘android’) < // return this.isLoadedFromFileSystem() // ? this.drawableFolderInBundle() // : this.resourceIdentifierWithoutScale(); // >else < return this.scaledAssetURLNearBundle(); // >//CRN END >
Вы можете увидеть, что изменения здесь будут напрямую удалить логику Android, простой и эффективный
Как заработать на производстве эко-пакетов? / Бизнес идея
Здесь CRN, чтобы позволить поддержку загружать пакеты услуг в нескольких каталоге, ресурс загружен, и весь код и ресурсы должны быть размещены в том же каталоге в соответствии с оригинальной логикой Rn.
//resolveAssetSource.js function getSourceCodeScriptURL(): ?string < //CRN BEGIN // Распаковка анализа пути if (global.CRN_PACKAGE_PATH) < return global.CRN_PACKAGE_PATH; >//CRN END if (_sourceCodeScriptURL) < return _sourceCodeScriptURL; >. . . >
Когда CRN нагружает пакет трафика, путь трафика пакет хранится в глобальной переменной CRN_Package_Path, см. Crn_Common_entry. Здесь возвращается к CRN_Package_Path представляет файлы задних ресурсов в этом каталоге, который завершает соответствующие файлы ресурсов, которые можно найти в соответствующем каталоге Business Bundle.
5, унифицированный бизнес пакет пакета продукты
Все знают, что из-за различий между платформами Android и iOS существуют некоторые модули JS, которые имеют версии Division Android и iOS, которые также приводят к пакетам JS от Android и iOS, чтобы быть разными, здесь CRN была обработана.
//build.js ** * Создание папок JS-Diffs, хранилище дифференцированный код пакета iOS и Android */ function mergeBundle() < var command = «diff -q » + path.resolve(currentPath, ‘bundle_output/publish/js-modules/’) + » » + path.resolve(currentPath, ‘bundle_output_other/publish/js-modules/’); logOutPut.log(command); try < execSync(command); >catch (error) < var diff = error.stdout.toString() logOutPut.log(diff); var regexp = /6+[0-9]*.js/g; var arr = diff.match(regexp) arr = [. new Set(arr)]; logOutPut.log(arr); var dest = path.resolve(currentPath, ‘bundle_output_other/publish/js-diffs/’); fs.ensureDirSync(dest) arr.forEach(function (item, i) < var src = path.resolve(currentPath, ‘bundle_output/publish/js-modules/’ + item); fs.copySync(src, path.resolve(dest, item)); >); > finally < deleteFile(path.resolve(currentPath, ‘./bundle_output/’)); fs.copySync(‘./bundle_output_other’, ‘./bundle_output’); logOutPut.log(‘mergeBundle finish’); >>
Это рассчитывает различия между Android и iOS и сохраняет различия в файле JS в папку JS-Diffs, а затем с нетерпением жду файла JS-Diffs в качестве файла Diffs JS, когда мобильный телефон Android загружает бизнес-пакет.
6, последующее наблюдение
90% логика пакета CRN здесь уже понятна, нам нужно обратить внимание на все бизнес-пакеты должны начинаться с 666666 ID, бизнес-пакет является пакетом RN_Common, это неreact-native-multibundlerгибкий. Однако экология CRN была усовершенствована, и эта развертринная практика достаточно.
Распаковка CRN была в основном закончена. В целом, преимущества CRN очевидны. Он обеспечивает базовые идеи распаковки и использует режим патча для изменения эффективности исходного кода, чтобы облегчить использование многих деталей. Оптимизация. Тем не менее, существует также оптимизированное пространство, RN_Common недостаточно гибким, взаимодействие между бизнес-пакетами не дает плана, который может быть компромиссом, сделанным для многоотраслевого сотрудничества.
- Структура поддержки упаковки и бизнес-код разделен
- Поддержка кода кадров фона предварительно нагрузка
- Упаковочная поддержка Инкрементная компиляция (тот же модуль, два укладка идентификатора модуля без изменений)
- IOS https://russianblogs.com/article/12352084020/» target=»_blank»]russianblogs.com[/mask_link]
Бесплатный доступ в бизнес-залы снова в пакете услуг СберПремьер
Клиентам с пакетом услуг СберПремьер с начала лета по 30 ноября 2023 года доступен бесплатный проход в бизнес-залы аэропортов и железнодорожных вокзалов России. Воспользоваться услугой можно два раза в месяц — например, дважды пройти самому либо один раз с сопровождающим, сообщает ИА «Хабаровский край сегодня».
Для прохода в зал достаточно показать сотруднику на входе QR-код в приложении СберБанк Онлайн и посадочный талон. После этого можно отдохнуть в комфортных условиях, подключиться к Wi-Fi, перекусить, а детям провести время в игровой комнате.
— Мы постоянно взаимодействуем с нашими клиентами и знаем, какие у них потребности и какие услуги им нужны, — говорит Николай Васёв, старший вице-президент, руководитель блока «Развитие клиентского опыта B2C» Сбербанка. — На период с июня по ноябрь, когда люди больше путешествуют, мы вернули в пакет услуг СберПремьер бизнес-залы, чтобы их поездки стали комфортнее. Кстати, эта опция востребована ещё и потому, что это удобно, когда клиенты ездят в командировки: в бизнес-залах можно провести онлайн-переговоры или отдохнуть перед деловой поездкой.
Ещё одна популярная привилегия пакета услуг СберПремьер — страховка для путешествий, которая защищает не только владельца пакета услуг, но и детей, супруга или супругу и родителей до 75 лет. Её страховое покрытие составляет 30 тыс. евро по России и 100 тыс. евро по всему миру и включает в том числе расходы на медпомощь при занятиях активным спортом, компенсацию при задержке или отказе в получении визы, задержке или отмене рейса и потере багажа.
Кроме того, владельцам пакета услуг доступны: выделенная линия СберПремьер по номеру 900, приоритетное обслуживание в любом офисе Сбербанка, выгодный обменный курс валют, повышенный кешбэк бонусами СберСпасибо, в том числе в СберМаркете, СберМегаМаркете и сервисе быстрой доставки Самокат, который начисляется при оплате не только дебетовыми, но и кредитными картами. А развлечения можно найти в онлайн-кинотеатре Okko и HiFi-стриминге Звук.
За пользование пакетом услуг можно не платить, если хранить на счетах, в инвестициях в Сбербанке от 2 млн рублей или тратить по картам Сбера от 150 тыс. рублей. Ещё одна возможность получить пакет бесплатно — это выполнить сразу два условия: держать в банке не менее 1,5 млн рублей и ежемесячно тратить по картам Сбера от 100 тыс. рублей. В остальных случаях пакет СберПремьер будет стоить 1990 рублей в месяц.
Источник: www.todaykhv.ru
Бесплатный доступ в бизнес-залы снова в пакете услуг СберПремьер
Воспользоваться услугой можно два раза в месяц — например, дважды пройти самому либо один раз с сопровождающим.
Для прохода в зал достаточно показать сотруднику на входе QR-код в приложении СберБанк Онлайн и посадочный талон. После этого можно отдохнуть в комфортных условиях, подключиться к Wi-Fi, перекусить, а детям провести время в игровой комнате.
Николай Васёв, старший вице-президент, руководитель блока «Развитие клиентского опыта B2C» Сбербанка:
«Мы постоянно взаимодействуем с нашими клиентами и знаем, какие у них потребности и какие услуги им нужны. На период с июня по ноябрь, когда люди больше путешествуют, мы вернули в пакет услуг СберПремьер бизнес-залы, чтобы их поездки стали комфортнее. Кстати, эта опция востребована ещё и потому, что это удобно, когда клиенты ездят в командировки: в бизнес-залах можно провести онлайн-переговоры или отдохнуть перед деловой поездкой».
Ещё одна популярная привилегия пакета услуг СберПремьер — страховка для путешествий, которая защищает не только владельца пакета услуг, но и детей, супруга или супругу и родителей до 75 лет. Её страховое покрытие составляет 30 тыс. евро по России и 100 тыс. евро по всему миру и включает в том числе расходы на медпомощь при занятиях активным спортом, компенсацию при задержке или отказе в получении визы, задержке или отмене рейса и потере багажа.
Кроме того, владельцам пакета услуг доступны: выделенная линия СберПремьер по номеру 900, приоритетное обслуживание в любом офисе Сбербанка, выгодный обменный курс валют, повышенный кешбэк бонусами СберСпасибо, в том числе в СберМаркете, СберМегаМаркете и сервисе быстрой доставки Самокат, который начисляется при оплате не только дебетовыми, но и кредитными картами. А развлечения можно найти в онлайн-кинотеатре Okko и HiFi-стриминге Звук.
За пользование пакетом услуг можно не платить, если хранить на счетах, в инвестициях в Сбербанке от 2 млн рублей или тратить по картам Сбера от 150 тыс. рублей. Ещё одна возможность получить пакет бесплатно — это выполнить сразу два условия: держать в банке не менее 1,5 млн рублей и ежемесячно тратить по картам Сбера от 100 тыс. рублей. В остальных случаях пакет СберПремьер будет стоить 1990 рублей в месяц.
Источник: kamchatinfo.com