Ionic ๋ฒ์ : ("x"๋ก ํ๋ ์ ํ)
[ ] 1.x
[ ] 2.x
[X] 3.x
์ ์ถ ์ค์
๋๋ค
[X] ๋ฒ๊ทธ ๋ณด๊ณ
[ ] ๊ธฐ๋ฅ ์์ฒญ
[ ] ์ง์ ์์ฒญ => ์ฌ๊ธฐ์ ์ง์ ์์ฒญ์ ์ ์ถํ์ง ๋ง๊ณ ๋ค์ ์ฑ๋ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ญ์์ค. https://forum.ionicframework.com/ ๋๋ http://ionicworldwide.herokuapp.com/
ํ์ฌ ํ๋:
virtualScroll ๋ด์์ DOC์ ์ค๋ช
๋ ๋๋ก ion-img
๋ฅผ ์ฌ์ฉํ๊ณ ์์ง๋ง ์ฒซ ๋ฒ์งธ ์๊ฐ์๋ ์ด๋ฏธ์ง๊ฐ ํ์๋์ง ์์ต๋๋ค(ํ์ ์์๋ง ํด๋น). ํน์ ์คํฌ๋กค ํ ์ผ๋ถ ์ด๋ฏธ์ง๊ฐ ๋ํ๋๊ณ ์กฐ๊ธ ๋ ์คํฌ๋กคํ๋ฉด ์ด๋ฏธ์ง๊ฐ ๋ค์ ์ฌ๋ผ์ง๋๋ค.
์์๋๋ ๋์:
์ด๋ฏธ์ง๋ ํด๋น ์์๊ฐ ํ๋ฉด์ ํ์๋ ๋ ํ์๋์ด์ผ ํฉ๋๋ค.
์ฌํ ๋จ๊ณ:
์ด ํ๋ฐ์ปค๋ก ์ด๋: http://embed.plnkr.co/WblnwO8P1lWgFW2TgVc1/
๊ฐ๋จํ ์ฐ๋ฝ์ฒ ๋ชฉ๋ก์ ๋๋ค. ์ฐ๋ฝ์ฒ๋ฅผ ๋ช ๊ฐ ์คํฌ๋กคํ๋ฉด ์ด๋ฏธ์ง๊ฐ ์ด๋ป๊ฒ ํ์๋๋์ง ์ ์ ์์ต๋๋ค.
๊ด๋ จ ์ฝ๋:
๋ณด์๋ค์ํผ ion-img
์ ์ฌ์ฉ๋ฒ์ DOCS์์ ์ ์ํ ๋๋ก์
๋๋ค.
<ion-content padding>
<ion-list [virtualScroll]="items" approxItemHeight="100px">
<ion-item *virtualItem="let item">
<ion-img style="width:100px; height:100px" [src]="item.imgUrl"></ion-img>
<span>
<h1>{{item.name}}</h1>
<p>{{item.phone}}</p>
</span>
</ion-item>
</ion-list>
</ion-content>
๊ธฐํ ์ ๋ณด:
๋ด๊ฐ ์กฐ์ฌํ ๋ด์ฉ์ ๋ํด updateImgs
ํจ์์ content.js ํ์ผ์์ ๋ชจ๋ ์ด์จ ์ด๋ฏธ์ง์ img.top
๊ฐ์ ๋์ผํฉ๋๋ค(๋ง์ง๋ง ์์น, ๋ค์๊ณผ ๊ฐ์ 1900ํฝ์
). img.bottom
์์๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค(์ฌ์ค, ๋ฌธ์ ๋ img._bounds
).
์ด๊ฒ์ด ๋ฐ๋ก ๊ทธ ์๊ฐ์ img์ ๊ฒฝ๊ณ๊ฐ viewableBottom
์ viewableTop - renderableBuffer
์ฌ์ด์ ์๊ธฐ ๋๋ฌธ์ ์คํฌ๋กค์ ํน์ ์ง์ ์์ ์ด๋ฏธ์ง๊ฐ ํ์๋๋ ์ด์ ์
๋๋ค.
์ด์จ๋ , ๋ฌธ์ ๋ img.js ์ _getBounds
๋ฉ์๋์๋ this._bounds
this._rect
์์ฑ๋ ์๊ณ
IMO ๋ฌธ์ ๋ ์ด๋ค ์์ผ๋ก๋ ion-img
์ ๊ฒฝ๊ณ๊ฐ ๊ฐ์ ์คํฌ๋กค ๋
ธ๋์ ๊ฒฝ๊ณ( updateNodeContext()
of virtual-util.js ).
Ionic ์ ๋ณด: (ํฐ๋ฏธ๋/cmd ํ๋กฌํํธ์์ ionic info
๋ฅผ ์คํํ๊ณ ์ถ๋ ฅ์ ์๋์ ๋ถ์ฌ๋ฃ๊ธฐ):
Cordova CLI: 6.5.0
Ionic Framework Version: 3.0.1
Ionic CLI Version: 2.2.2
Ionic App Lib Version: 2.2.1
Ionic App Scripts Version: 1.3.0
์ด ๋ฌธ์ ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ๋ด ์ฑ์์ ๋น์ทํ ๋์์ ๋ณด๊ณ ์์ผ๋ฉฐ Ionic Framework 3.0.1๋ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์คํฌ๋กคํ๋ ๋์ DOM์ ์กฐ์ฌํ๋ฉด ๊ตฌ์ฑ ์์๊ฐ ์ฌ์ ํ ๋ณด์ด๋ ๋ทฐํฌํธ์ ์์ง๋ง ์ผ๋ถ ion-image
๊ตฌ์ฑ ์์์ class
์์ฑ์ด "img-loaded"์์ "img-unloaded"๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
์ฌ๋ฌ๋ถ, ์๋
ํ์ธ์! ์ต์ ๋ฐค์ ์๋ํด๋ณด๊ณ ์ด๊ฒ์ด ์ฌ์ ํ ๋ฌธ์ ์ธ์ง ํ์ธํ์๊ฒ ์ต๋๊น? ionic-angular
์ ์ผ๊ฐ์ ์ค์นํ๋ ค๋ฉด ํ๋ก์ ํธ์์ npm install ionic-angular<strong i="6">@nightly</strong> --save
๋ฅผ ์คํํ ์ ์์ต๋๋ค. ๊ฐ์ฌ ํด์!
์, ์ฌ์ ํ ๋ฐ์ํฉ๋๋ค :(
๋๋. ํ์ฌ nightly์์ ๋ฌธ์ ๊ฐ ์ง์๋ฉ๋๋ค.
*ngFor์์๋ ๋ฐ์ํฉ๋๋ค.
๋๋ ๊ด๋ จ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ด ์์ต๋๋ค. ์ธ๋ค์ผ ์ด๋ฏธ์ง๋ ๋์ด๊ฐ ๋ชจ๋ ๋ค๋ฅด๊ณ ๋๋น๊ฐ 300ํฝ์ ์ ๋๋ค. ์ด๋ค์ v2์์ ์์๋๋ก ์๋ ธ๋๋ฐ ์ด์ ๋ ์ด๋ฏธ์ง๊ฐ ์ ํ ํ์๋์ง ์์ต๋๋ค.
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. 80x80px ์ธ๋ค์ผ ๋ชฉ๋ก์ด ๋น์ด ์์ต๋๋ค.
<ion-list [virtualScroll]="place.uploads" [approxItemHeight]=" '80px' ">
<ion-icon name="images" margin-right></ion-icon>
Photos
<div *virtualItem="let photo">
<ion-img width="80" height="80" [src]="photo.thumbnail_url"></ion-img>
</div>
</ion-list>
ํ๊ฒฝ.txt
3.1.0์ผ๋ก ์น๋ฃ๊ฐ ์๋๋๊ฑฐ ๊ฐ์๋ฐ์?
ํ
์คํธ๋ฅผ ์ํด ๋ฐ์คํฌํฑ Chrome(Win 10)์์ 'ionic serve'๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
์๋๋ก ์คํฌ๋กคํ์ฌ ์ผ๋ถ ์ด๋ฏธ์ง๊ฐ ํ์ ์์ผ๋ก ๋์์ฌ ๋๊น์ง ์ด๋ฏธ์ง ๋์ ํ์ ์์ด ๋ง์ด ์์ต๋๋ค ...
์ฝ๋ฅด๋๋ฐ CLI: 6.5.0
Ionic ํ๋ ์์ํฌ ๋ฒ์ : 3.1.0
Ionic CLI ๋ฒ์ : 2.2.2
Ionic ์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ : 2.2.1
Ionic ์ฑ ์คํฌ๋ฆฝํธ ๋ฒ์ : 1.3.4
ios-deploy ๋ฒ์ : ์ค์น๋์ง ์์
ios-sim ๋ฒ์ : ์ค์น๋์ง ์์
์ด์ ์ฒด์ : ์๋์ฐ 10
๋
ธ๋ ๋ฒ์ : v6.10.0
Xcode ๋ฒ์ : ์ค์น๋์ง ์์
๋ํ 3.1.0์ผ๋ก ์ ๋ฐ์ดํธ๋ฅผ ์๋ํ์ต๋๋ค. -> ๋ฌธ์ ๊ฐ ์ฌ์ ํ ์กด์ฌํฉ๋๋ค.
๊ธฐ๋ก์ ์ํด - ์๋๋ 3.1.1 - ์ฌ์ ํ ๋ฌธ์ ์ ๋๋ค.
๋๋ ๋ํ 3.1.1์ ์๋ํ์ต๋๋ค - ์ฌ์ ํ ๋ฌธ์ ์ ๋๋ค.
์ด๊ฒ์ ์ค๋๋ ๋ฌธ์ ์ ๋๋ค - RC4 ์ดํ๋ก ์กด์ฌํฉ๋๋ค - ๋ชจ๋ ์ ๋ณด๋ #9660์์ ์ฐพ์ ์ ์์ต๋๋ค
@jgw96 https://github.com/shprink/ionic-withwebworker-vs-withoutwebworker ์์ Ionic 3.1.1๋ก ์ฝ๊ฒ ์ฌํํ ์ ์์ต๋๋ค.
๊ธฐ๋ก์ ์ํด ์บ๋ฒ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ์ ๋ง๋ค๊ณ ์ถ์ ๊ตฌ์ฑ ์์๊ฐ ์์ต๋๋ค. :)
๋๊ตฐ๊ฐ๊ฐ ์ง์ฐ ๋ก๋ฉ์ ์ํ ๊ณตํต "์ด์จ ์บ๋ฒ์ค" ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋ค ์ ์์ต๋๊น? :)
๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค :/
๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค :)
์๋ ํ์ธ์ ์ ๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์ต๋๋ค. ์ ๊ฒฝ์ฐ์๋... ์ฒซ ๋ฒ์งธ ์ด๋ฏธ์ง๊ฐ ํ์๋์ง ์์ต๋๋ค... ๊ทธ๋ฐ ๋ค์ ๋งจ ์๋๋ก ์คํฌ๋กคํ๋ฉด ์ด๋ฏธ์ง๊ฐ ๋ํ๋๊ธฐ ์์ํ์ง๋ง ๋งจ ์๋์ ์๋ ์ด๋ฏธ์ง๋ง ํ์๋ฉ๋๋ค... ์๋ก ์คํฌ๋กคํด๋ ์ฃผ๋จน ์ด๋ฏธ์ง๊ฐ ๋ํ๋์ง ์์ต๋๋ค ...
<ion-list [virtualScroll]="playList" [approxItemHeight]="imageSize + 'px'" [approxItemWidth]="imageSize + 'px'" [bufferRatio]=10>
<div *virtualItem="let post" [style.width]="imageSize + 'px'" [style.height]="imageSize + 'px'">
<ion-img [src]="element.pathToImage" [width]="imageSize+ 'px'" [height]="imageSize + 'px'" ></ion-img>
</div>
</ion-list>
๋ค์์ ํ์๋์ง ์์ ๋์ html์
๋๋ค.
<ion-img class="img-unloaded" ng-reflect-src="assets/img/1.jpg" ng-reflect-width="705px" ng-reflect-height="705px">
<img>
</ion-img>
ํ์ํ ๋:
<ion-img class="img-unloaded" ng-reflect-src="assets/img/1.jpg" ng-reflect-width="705px" ng-reflect-height="705px" style="width: 705px; height: 705px;">
<img src="assets/img/1.jpg" alt="">
</ion-img>
๋ฒ๊ทธ๋ฅผ ์ฐพ์์ต๋๋ค. ์ด ์๊ฒฌ์์ https://github.com/ionic-team/ionic/issues/9660#issuecomment -304840427์ ์ด์ ๋ํ ๋ ๊ฐ์ง ๊ฐ๋ฅํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ฌ์ ํ ๋ฌธ์ ๊ฐ ์์
$ ionic info
global packages:
@ionic/cli-utils : 1.5.0
Cordova CLI : 7.0.1
Ionic CLI : 3.5.0
local packages:
@ionic/app-scripts : 2.0.2
@ionic/cli-plugin-cordova : 1.4.1
@ionic/cli-plugin-ionic-angular : 1.3.2
Cordova Platforms : android 6.2.3
Ionic Framework : ionic-angular 3.5.3
System:
Node : v6.11.0
OS : Windows 10
Xcode : not installed
ios-deploy : not installed
ios-sim : not installed
npm : 5.3.0
์ด ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์์์ง๋ง ์ด ์์ ์คํ์ผ ํดํน์ผ๋ก ํด๊ฒฐํ์ต๋๋ค.
<ion-list [virtualScroll]="items">
<ion-item *virtualItem="let item" style="overflow:hidden;width:300px;height:300px;">
<ion-img [src]="item.url" [cache]="true" [width]="item.width" [height]="item.height"></ion-img>
</ion-item>
</ion-list>
๊ทธ๋ฆฌ๊ณ ์ด CSS ๊ท์น:
ion-label {
height: 100%;
}
๊ทธ๊ฒ์ด ์์ ์ด๋ผ๊ณ ๋งํ์ง๋ ์์ง๋ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์์ง ์์ ๋์ง ์์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ค๋ฅธ ๋ฌธ์ ์์ ์ ์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์ ๋๋ก ์๋ํ์ง ์์ต๋๋ค. ๋ฌดํ ์คํฌ๋กค์ด ์ต์ ์ด ์๋ ๊ฒฝ์ฐ ์๋ฐฑ ๊ฐ์ ์์ ์ถ์ํ ๋ชฉ๋ก์ ๋ถ๋๋ฝ๊ฒ ์คํฌ๋กคํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ์ด๊ฒ์ ๋ชจ๋ฐ์ผ์์ ๋งค์ฐ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค...
๋ ๋ฆฝ์ ์ธ ng-lazyload-image๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋์๊ฒ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋จ์ง ์ฝ๊ฐ์ ๋ก๋ฉ ์๊ฐ์ ํ์ธํ ํ์๊ฐ ์์ต๋๋ค. ์ฝ๊ฐ ๋ฌด๊ฑฐ์ ์ต๋๋ค. (์ด์ฉ๋ฉด ๋ด๊ฐ ์ด๋ฏธ ํด๊ฒฐํ ๋ค๋ฅธ ์ด์ ๋ก ์ธํด - ์บ๋ฒ์ค๊ฐ ๋งค์ฐ ํ๋ค๋ ธ๊ธฐ ๋๋ฌธ์ ์ด์จ ์คํฌ๋กค๋ก ์ด๋ํด์๋ ์ ๋จ)
๋๋ ์๊ฒฉํ ํ๋ก์ ํธ ํ์ ๋ผ์ธ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋์ค์ ์ด ์ฑ๊ฐ์ ๋ฒ๊ทธ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
๋๋ ๊ทธ๊ฒ์ด ํฐ ๋ฌธ์ ๊ฐ ์๋๋ผ๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ๋ฐฉ๊ธ ์ด์จ ๊ธฐ๋ฐ ์์ ์ ํ์ต๋๋ค.
๋น์ (bubbleguuum)์ ๋ํ ๊ทธ๊ฒ์ ๋ฐฐ์ฐ๊ณ ์ถ๋ค๋ฉด ๊ทธ๊ฒ์ ๋๋ฒ๊น ํ ์๋ ์์ต๋๋ค. ๋ณ๊ฑฐ ์๋ ์๋ ์๊ณ , ์๋ฌด๋ ๋์น์ฑ์ง ๋ชปํ๋ค. (์ผ๋ถ ์ฌ์ค๊ณ๊ฐ ์งํ๋๊ณ ์์ง๋ง ์์ ๋ฒ๊ทธ ์์ ์ด ๊ฒ์๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.) ์ ๋ ๋ ๋ฆฝ ๊ฐ๋ฐ์์ด๋ฏ๋ก ์์ ํ๋ฉด ๊ธฐ์ ๊ฒ์ ๋๋ค. ๊ทธ๋ด ํ์๊ฐ ์์ต๋๋ค.:)
์ด์จ๋ Angular์๋ ์๋ฏธ ์๋ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์ํฉ๋๋ค. ๋๋ถ๋ถ์ ๊ณ ํต์ ๊ฑฐ๊ธฐ์์ ๋น๋กฏ๋ฉ๋๋ค.
์ถ์ ์ถ์ ์ ์ฑ์ ํธ์ถ์๋ฅผ ํ์ํ์ง ์๊ณ ํญ์ ๋ ๊น์ ์์ค์์ ์ผ์ข
์ webpack/promise ์ค๋ฅ๋ฅผ ํ์ํฉ๋๋ค.
์ด๊ฒ์ด ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ๋ฏฟ์ ์ ์์ต๋๋ค. @bubbleguuum ์ด ๋จธ๋ฆฌ๋ฅผ ๋ง์์ต๋๋ค.
์ด๊ฒ์ ์ ๋ ์ฉ๋ฉํ ์ ์์ต๋๋ค. ๊ฑฐ์ ๋ชจ๋ ์ฑ์๋ ์๋ํ์ง ์๋ ๋ฌธ์ ์ ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค. ๋ํ 2016๋ 12์ ๋ฌธ์ #9660์ด ์๊ณ ์ฌ์ ํ ์์ ๋์ง ์์ ์ํ๋ผ๋ ์ฌ์ค์ด ๋ถ์ํฉ๋๋ค... :(
์ ๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. json์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ *ngFor๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฐํธ์๋์ ๋ฐ์ดํฐ๋ฅผ ํ์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ion-img์ img ํ๊ทธ๋ ๋ช ๊ฐ์ง ์ด์ ๋ก ๊ณต๋ฐฑ์ผ๋ก ๋จ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
<ion-item *ngFor="let product of products">
<span class="ratings">{{product.brand}}</span>
<ion-img src="assets/images/user_quest.png" width="40" height="22" class="user_quest"></ion-img>
<ion-img src="{{product.img}}" width="90" height="115"></ion-img>
<div text-center margin-top margin-bottom>
</div>
<p class="brand_name">{{product.brand}}</p>
<p class="product_name">{{product.name}}</p>
<p class="product_price">10 €</p>
<div text-center margin-top>
<button ion-button color="light" class="add_cart_btn" icon-end>Add to cart</button>
</div>
</ion-item>
ํ์ง๋ง ๊ฒฐ๊ณผ๋ ์ด๋ ๊ฒ ๋ฉ๋๋ค
์ ๋ ์๋ถ๊ณผ ๊ฐ์ ๊ณ ๋ฏผ์ ํ๊ณ ์์ต๋๋ค.
์ด๊ฒ์ ์ฝ๋์
๋๋ค
์ด๊ฒ์ ์ถ๋ ฅ์ ๋๋ค
์ผ๋ง ์ ์ ๋น์ทํ ๋ฌธ์ ๊ฐ์์์ต๋๋ค. ์ง๋ ๋ฐฐ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง URL์ ๋ณ๊ฒฝํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ๋ฐ๋ผ์ ๋ค์ ๊ณผ ๊ฐ์ ๊ฒ์ด ํ์ํฉ๋๋ค
.ts ํ์ผ์์
this.pizzaList = this.pizzaList.map((ํผ์)=>{
Pizzas.imgUrl = "./assets/" + pizzas.imgUrl + ".jpg";
๋ฐํ ํผ์
});
์๋น์ค๋ฅผ ํธ์ถํ๋ ๋์ ์ง๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์๋น์ค
.ts ํ์ผ
*ngfor ๋ด๋ถ์์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋๋ ์ ํํ๊ณ ์๋ค ํด๊ฒฐ์ฑ ์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ !!
์๋ํ์ง ์์ต๋๋ค, ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?!?
@karimessouabni ์ด ๋ฌธ์ ์ ๋ํ ํด๊ฒฐ์ฑ
์ด ์์ต๋๋ค. ๋น ์ด๋ฏธ์ง๋ฅผ ํผํ๊ธฐ ์ํด img ํ๊ทธ๋ฅผ ์ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
<img src="{{product.img}}">
@shahid27125 ๋ชจ๋ ์ด๋ฏธ์ง๊ฐ ์ฆ์ ๋ก๋
@fdambrosio ์ด ๋๊ธ์์ https://github.com/ionic-team/ionic/issues/9660#issuecomment -304840427์ด ์ด์ ๋ํ ๋ ๊ฐ์ง ๊ฐ๋ฅํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค.
@DavidWiesner ๊ฐ์ฌ
์ข์ ํ ๊ฐ๋ฐ์๊ฐ ํ ๋ช ๋ ๋ผ์ด๋ค์๋ค... ์ง์ฌ์ผ๋ก ์๋ค์, ๊ทธ ์ฐ๋ ๊ธฐ๋ฅผ ๊ณ ์ณ๋ผ.
@tomcatmwi์ ๋์ํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ณํ์ด ์์ต๋๊น?
์์ฐ, ์ฌ๋๋ค์ด ์ด๊ฒ์ ์ผ๋ง๋ ์ค๋ซ๋์ ๊ธฐ๋ค๋ ธ๋์ง ๋ฏฟ์ ์ ์์ต๋๋ค ... ์ง๊ธ ์์ ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
์ด๋ฏธ์ง ๋ก๋ฉ์ ๊ด์ฌ์ด ์๋ ๋ชจ๋ ์ฌ๋์ ์ํด ng2-lazyload-image ๋ชจ๋์ ๋ณผ ์ ์์ต๋๋ค. https://www.npmjs.com/package/ng2-lazyload-image
๋๋ ํ๋ก๋์ ์์ ์์ฒ ๊ฐ์ ํ๊ณผ ํจ๊ป ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ ์์ ํ ์ฌ์ค์ด ์๋๋๋ค.
git checkout .
์ฌ์ ํ ๊ฐ์ ๋ฒ๊ทธ..
์ฌ๊ธฐ ์ฌ์ธ์
๋ค, ์ฌ์ ํ ๋ฒ๊ทธ์
๋๋ค.
์์ ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๊ทธ๋์ ๋๋ ์ด๊ฒ์ ์ฌ์ฉํ ๊ฒ์
๋๋ค : https://www.npmjs.com/package/ng-lazyload-image
๊ฐ์ฅ ์ข์ ํด๊ฒฐ์ฑ ์ด ์๋ค๋ฉด ์ธ์ ๋ ์ง ์๋ ค์ฃผ์ธ์ :)
<ion-img [src]="url"></ion-img>
์ <img [src]="url">
์ด ๋ฌธ์ ๋ ์์ต๋๋ค. img๋ฅผ ์ฌ์ฉํ๋ @dm-grinko๋ ์ง์ฐ ๋ก๋ฉ์ ์ง์ํ์ง ์์ต๋๋ค. ์ด๋ ์ด๋ฏธ์ง๊ฐ ๋ง์ ๋ ์ค์ํฉ๋๋ค.
์๋ฒ์์ ๋ค์ด๋ก๋ํ ์ด๋ฏธ์ง๊ฐ ๋ฐฐ์ด์ ์์๋๋ฐ ์ด์ ๋ณด์ฌ์ฃผ๊ณ ์ถ์ต๋๋ค.
์ฌ๊ธฐ ๋ด ์ฝ๋๊ฐ ์์ต๋๋ค.
<ion-list [virtualScroll]="Images">
<ion-item *virtualItem="let item">
<ion-img src="data:image/*;base64,{{item.ImageValue}}" style="height: auto; width: auto;">
</ion-img>
</ion-item>
</ion-list>
@husainsr ion-img๋ฅผ img๋ก ๋ณ๊ฒฝ
ion-img๊ฐ ์๋ํ์ง ์์ต๋๋ค
์ด๋ฏธ์ง ๊ฐ์ด base64 ๋ฌธ์์ด์ ์ ์ฅ๋ ๋ฐฐ์ด์ด ์๊ธฐ ๋๋ฌธ์ <img>
๋ virtualscroll์์ ์๋ํ์ง ์์ต๋๋ค.
์ธํฌ๋ ๋๋ธ ... ์ ์ฒด ํ๊ณผ ํ๋ก์ ํธ๋ฅผ React Native๋ก ๋น ๋ฅด๊ฒ ์ ํํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ๋ฒ๊ทธ๊ฐ ์์ง ์์ ๋์ง ์์ ๊ฒ์ ๋ณด๋ ์ด์ด๊ฐ ์์ต๋๋ค.
Ionic 4์์ ์์
ํ๋ ๋์ ์ฒซ ๋ฒ์งธ ํ์ง์ ๋ฐฐ์ก์ ๋ณด์ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด๋ค ์ผ ์ฃผ์์ ๋จ์?
๋ชจ๋ ์๋ฃจ์ @ionic ํ???
์์งํ ๋งํ๋ฉด ionic ํ์ ๋ด๊ฐ ๋ด ์์ ์ ํ๋ ์์ํฌ๋ฅผ ๋ง๋ค๊ธฐ๋ก ๊ฒฐ์ ํ์ ๋ ์ ์ฉํ๋ ์ปคํจ์ํฐ์ ๊ฐ์ ๋ฉ์ง ๋ ๋ฆฝ ํ๋ก์ ํธ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋ก์ด ์ด์จ ๊ฐ์ ์คํฌ๋กค ๊ธฐ๋ฅ์ ํ๋ช ํ๊ฒ ๋ณ๊ฒฝ๋์ง ์๊ณ ์คํ ์ค(์น ๊ตฌ์ฑ ์์, ์๋ ํฅ์, ๋ชจ๋ ์ฌ๋์ด ์ง์ํ์ง ์์, Safari hws ๋ฌธ์ )์ผ๋ก ๋ณํ๋์์ผ๋ฏ๋ก v4๋ฅผ ๋๋ฌด ๋ง์ด ๊ธฐ๋ค๋ฆฌ์ง ๋ง์ญ์์ค. ์ด ๊ฐ์ ์คํฌ๋กค ๊ตฌํ์ ๋งค์ฐ ๊ธฐ๋ณธ์ ์ ๋๋ค. (ํ๋ฉด ๋ฐฉํฅ ๋ณ๊ฒฝ ๋ฒ๊ทธ, ๊ฐ๋ณ ํญ๋ชฉ, ์ง์ฐ ๋ก๋ฉ ๋ฌธ์ , ๋๋ฌด ๋ปฃ๋ปฃํจ, ๋ฌธ์ ํด๊ฒฐ ์๋, ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ ์ผ) 2016๋ ์๋ Angular์ ๋ํด์๋ ์ฝ๊ฐ์ ์ง์์ด ์์์ง๋ง ์ ๊ณ์์ ์์ญ ๋ ๋์ ์ผํ์ง๋ง ๋งค์ฐ ํ๋ ์์ํฌ๋ฅผ ๋ง๋๋ ๋ฐ ์ด๋ ค์์ด ์์ต๋๋ค. ๋ด ์ง๊ฐ์ ์คํ ์์ค ํ๋ก์ ํธ๋ ๊ธฐ๋ณธ ๊ฐ๋ ์ด ์๋ฆฌ ์ก์ 3์ฃผ๊ธฐ ํ์ ๊ฒ์๋์ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ฐ๋์ ๊ดํด์๋ ์ฌ์ค์ ๋๋ค. ๋จธํฐ๋ฆฌ์ผ์๋ ์กด์ฌํ์ง ์๋ ์ ์ฐํ ๊ฐ์ ์คํฌ๋กค์ ๋ง๋๋ ๊ฒ์ ์ฌ์ด ์ผ์ด ์๋๋๋ค. ๋ฐฑ์๋์ ๋ง์ด ํตํฉ๋๋ ํ๋ ์์ํฌ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง ํ ๋ฌ์ด ๊ฑธ๋ ธ์ต๋๋ค. (์ธ์ ์ค๋น๊ฐ ๋์๋์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ง๊ธ์ 1๋ ์ ๋๋ค.) ๊ทธ๋์ ์์ฆ์ ์ด์จ ๊ฐ๋ ์ด ์ฝ๊ฐ ํ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ์ด์จ๋ ๋ฐ์๊ณผ ํจ๊ป ์ด์จ v4๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ชจ๋ JavaScript ํ๋ ์์ํฌ๋ ๊ธฐ๋ณธ ์ฑ์์ ๋ณผ ์ ์๋ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ์ง ์์ต๋๋ค. ์กด์ฌํ๋ค๋ฉด ์ข๊ฒ ์ง๋ง ๋ฒ๊ทธ๊ฐ ์๋ค๋ฉด ๋ถํํ๋ swift, android ๋ฐ ๊ธฐํ ๊ฒ๋ค๋ ์ดํดํด์ผ ํฉ๋๋ค. C++. ์ง๊ธ์ ์น ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ์ง ์๋๋ผ๋ ์ฝ๊ฐ์ ์ฃผ์ค๋ฅผ โโ๋ง๋ค ์ ์์ผ๋ฏ๋ก ์๋๋ ๊ด์ฐฎ๊ณ ํ์ด๋ธ๋ฆฌ๋ ์ฑ์ด ํ์ค์ด ๋ ๊ฒ์ ๋๋ค. ์ ์ด๋ pwa ๋๋ฌธ์ ์์ฌ์ ์ฌ์ง๊ฐ ์์ง๋ง ํจ์ฌ ๋ ๋ง์ ๊ธฐ์ ์ด ํ์ํฉ๋๋ค. ๊ทธ๋ฅ ๋ค์ดํฐ๋ธ๋ก ๊ฐ์๋ฉด ๋ฉ๋๋ค. (๋๊ตฐ๊ฐ๋ ๋ ๋ฒ ๊ฐ๋ฐํด์ผ ํจ) ์คํ ์์ค ํ๋ฌ๊ทธ์ธ์ ์ ๋ง ์ ๋ขฐํ ์ ์์์ต๋๋ค.
ํ์ฌ ์ฐ๋ฆฌ ํ์ ๋ ์ด์ ionic์์ ์๋ํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ์ด๊ฒ๋ค์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฏฟ์ ์์๋ !!!
์ด ๋ฌธ์ ๋ Ionic 3 ๋ฌธ์ ๋ก ์๋ ์๋ณ๋์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ต๊ทผ์ Ionic 3๋ฅผ ์์ฒด ์ ์ฅ์๋ก ์ฎ๊ฒผ์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ Ionic 3์ฉ ์ ์ฅ์๋ก ์ฎ๊ธฐ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์์ ์ด ๋ฌธ์ ๋ฅผ ์ถ์ ํ์ญ์์ค.
์ ๊ฐ ์ค์๋ฅผ ํ๊ณ ์ด ๋ฌธ์ ๊ฐ ์ฌ์ ํ Ionic 4์ ๊ด๋ จ์ด ์๋ค๋ฉด Ionic Framework ํ์ ์๋ ค์ฃผ์ญ์์ค!
์์ด์ค๋์ ์ด์ฉํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
๋ฌธ์ ์ด๋: https://github.com/ionic-team/ionic-v3/issues/210
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ธํฌ๋ ๋๋ธ ... ์ ์ฒด ํ๊ณผ ํ๋ก์ ํธ๋ฅผ React Native๋ก ๋น ๋ฅด๊ฒ ์ ํํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ๋ฒ๊ทธ๊ฐ ์์ง ์์ ๋์ง ์์ ๊ฒ์ ๋ณด๋ ์ด์ด๊ฐ ์์ต๋๋ค.
Ionic 4์์ ์์ ํ๋ ๋์ ์ฒซ ๋ฒ์งธ ํ์ง์ ๋ฐฐ์ก์ ๋ณด์ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค.