[英]How to use imported third-party js (not addon/npm package) in controller/component?
我在供應商目錄中放了我的js文件eva.min.js/feather.min.js
等,然后我將它們導入到ember-cli-build.js app.import('vendor/eva.min.js')
。 但是怎么用呢?
我嘗試import eva from 'eva'/'eva.min'/'eva.min.js'
import Eva from 'eva';
或import Eva from 'eva';
等等,但它不起作用。
app.import('vendor/eva.min.js');
app.import('vendor/bootstrap.min.js');
app.import('vendor/feather.min.js');
app.import('vendor/popper.min.js');
app.import('vendor/jquery-slim.min.js');
app.import('vendor/swipe.js');
import Swipe from 'swipe';
控制台通常會讓我找不到模塊錯誤。 我沒有深入的編程背景,所以如果你能盡可能簡單地解釋問題,我將非常感激。
UPD:我發現所有js代碼都是npm包(碰巧js文件不是第三方)
https://www.npmjs.com/package/feather
https://www.npmjs.com/package/popper.js
https://www.npmjs.com/package/jquery-slim
https://www.npmjs.com/package/swipe
https://www.npmjs.com/package/bootstrap
https://www.npmjs.com/package/eva-icons
但你所有的回答都很有幫助。 無論如何,我希望在不久的將來使用第三方庫。
一種快速的方法是使用scriptjs ,它允許您以下列方式將任何javascript加載到組件中:(我使用Yammer作為示例)
import $scriptjs from 'scriptjs';
componentDidUpdate() {
//script loader
setTimeout(function(){
$scriptjs('https://c64.assets-yammer.com/assets/platform_embed.js',
() => {
window.yam.connect.embedFeed(YammerHelper.loadComments());
});
}, 1000);
}
你應該知道如何消費它。 通過大量示例檢查他們的文檔。
這不是最好的解決方案。 但使用第三方js的一種方法是,
1)假設你的js文件vendor/third-party.js
有一個函數
someFunction = function (element) {
...
console.log("works")
};
2)然后在你的ember-cli-build.js
導入它
...
app.import('vendor/third-party.js');
...
3)導入后restart
服務器。
直接在控制器/組件中使用該功能
window["someFunction"]
除非明確使用的JavaScript庫支持import X from 'y'
語法import X from 'y'
否則當您使用app.import
語法導入構建時,您只需在應用程序中使用它,就像插件文檔所描述的那樣。
因此,對於Swipe
您將執行以下操作。 基於此文檔: https : //github.com/thebird/Swipe
// ember-cli-build.js
app.import('myswipe.js`);
// component.js
/* global Swipe */ // This silences the linter from throwing errors...
classNames: ['swipe'],
didInsertElement() {
this._swipe = Swipe(this.element, {
option1: option1
});
}
// component.hbs
<div class='swipe-wrap'>
{{yield}}
</div>
此代碼創建一個組件來控制滑動插件。 此代碼將創建一個滑動對象並將其與組件隔離。
再次使用app.import
您只是在啟動時加載庫。 該庫可以完成它在文檔中所做的任何操作。 有時他們會注冊一個全局對象,有時他們不會。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.