рдирдорд╕реНрдХрд╛рд░!
рдореИрдВ рдПрдХ рдЖрдпреЛрдирд┐рдХ 2 рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдХреЛрдгреАрдп 2 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ рдФрд░ рдореИрдВ LazyLoad рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рд╕рдВрдХрд▓рди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ
my_file.js
import {Component, Input} from "angular2/core";
import {LazyLoadImageDirective} from "ng2-lazyload-image/index";
@Component({
selector: 'image',
template: `
<img src="images/placeholder_big" [lazyLoad]="image" offset="50">
`,
directives: [LazyLoadImageDirective]
})
class ImageComponent {
@Input('src') image;
}
export {ImageComponent}
/Users/lobetia/repo/ionic2_migration/node_modules/ng2-lazyload-image/index.ts:1
import {LazyLoadImageDirective} from './src/lazyload-image.directive';
^
ParseError: 'import' and 'export' may appear only with 'sourceType: module'
/рд╕реВрдЪрдХрд╛рдВрдХ рд▓реЗрдЦрди рдХреЗ рдмрд┐рдирд╛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ
import {LazyLoadImageDirective} from "ng2-lazyload-image";
рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ
/Users/lobetia/repo/ionic2_migration/node_modules/ng2-lazyload-image/src/lazyload-image.directive.ts:1
import 'rxjs/add/observable/fromEvent';
^
ParseError: 'import' and 'export' may appear only with 'sourceType: module'
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдореИрдВ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдпрд╛ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ? рд╢реБрдХреНрд░рд┐рдпрд╛
рдирдорд╕реНрддреЗ,
рдЖрдкрдХрд╛ рд╕реЗрдЯрдЕрдк рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рдмреЗрдмреЗрд▓ рдпрд╛ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЖрдпреЛрдирд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдЕрдкрдиреА tsconfig.json
рдлрд╝рд╛рдЗрд▓ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?
рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдиреЛрдб 5.4 . рдкрд░ рдЖрдпрдирд┐рдХ@2.0.0-рдмреАрдЯрд╛.25 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдореИрдВ рдЯрд╛рдЗрдкрдкреНрд░рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореЗрд░рд╛ tsconfig.json is
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
"filesGlob": [
"**/*.ts",
"!node_modules/**/*"
],
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts"
],
"compileOnSave": false,
"atom": {
"rewriteTsconfig": false
}
}
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХреНрдпреЛрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдХрд▓рд┐рдд .js
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреБрди: рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди npm рдореЗрдВ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдерд╛ред
рддреЛ рдЕрдЧрд░ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реВрдВ:
$ ionic start MyIonic2Project tutorial --v2 --ts
рдФрд░ рдлрд┐рд░ /app/pages/hello-ionic/hello-ionic.ts
рдХреЛ рдмрджрд▓ рдХрд░:
import { Page } from 'ionic-angular';
import { LazyLoadImageDirective } from 'ng2-lazyload-image';
@Page({
templateUrl: 'build/pages/hello-ionic/hello-ionic.html',
directives: [ LazyLoadImageDirective ]
})
export class HelloIonicPage {
defaultImage: string;
image: string;
offset: number;
constructor() {
this.defaultImage = 'https://www.placecage.com/1000/500';
this.image = 'https://images.unsplash.com/photo-1443890923422-7819ed4101c0?fm=jpg';
this.offset = 100;
}
}
рдФрд░ /app/pages/hello-ionic/hello-ionic.html
рд╕реЗ:
<ion-navbar *navbar>
<button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>Hello Ionic</ion-title>
</ion-navbar>
<ion-content padding class="getting-started" #container>
<p style="height: 1000px;">
This starter project comes with simple tabs-based layout for apps
that are going to primarily use a Tabbed UI.
</p>
<img
[src]="defaultImage"
[lazyLoad]="image"
[offset]="offset"
[scrollTarget]="container._scrollEle">
</ion-content>
рдпрд╣ рдЕрдм [email protected]
рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рдПрдХ рд╕реНрдкрд┐рди рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?
рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдирд┐рд░реНрджреЗрд╢ window
рдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕реБрдиреЗрдВрдЧреЗ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВ рдмрддрд╛рддреЗ рд╣реИрдВред рдЬреЛ рдЖрдкрдХреЛ ionic
рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЖрдВрддрд░рд┐рдХ div рд╣реИ рдЬреЛ рд╕реНрдХреНрд░реЙрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
рдЕрд░реНрдерд╛рдд
<ion-content #container>
<img [scrollTarget]="container._scrollEle" ...>
</ion-content>
рдКрдкрд░ рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдФрд░ #2
рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рддреБрдо рдХрдорд╛рд▓ рд╣реЛ!
рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдПрдХ рдЖрдИрдПрдордЬреА-рдЖрд▓рд╕реА рдШрдЯрдХ рдореЗрдВ рдкреИрдХ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЫрд╡рд┐ рдХреЗ рдлреЗрдбрд┐рди рдФрд░ рд╢рд╛рдпрдж рдХреБрдЫ рдСрдлрд╝рд▓рд╛рдЗрди рдХреИрд╢рд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдПрдирд┐рдореЗрдЯ рдХрд░рдиреЗ рдкрд░ рдереЛрдбрд╝рд╛ рдХрд╛рдо рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдореБрджреНрджрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рд╣реИ
рдЦреБрд╢реА рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
рдореИрдВ рдЫрд╡рд┐ рдХреЗ рдлрд╝реЗрдбрд┐рди рдХреЛ рдПрдирд┐рдореЗрдЯ рдХрд░рдиреЗ рдкрд░ рдереЛрдбрд╝рд╛ рдХрд╛рдо рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ
рдмрд╕ рддреБрдо рдЗрддрдирд╛ рдЬрд╛рдирддреЗ рд╣реЛред рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд░реНрдЧ ng2-lazyloading
рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрдХреНрд╖рд╛ ng2-lazyloaded
рдЬреЛрдбрд╝ рджреА рдЬрд╛рдПрдЧреАред
рдЕрд░реНрдерд╛рдд
// Before loaded
<img [lazyLoad]="image" class="ng2-lazyloading">
// After loaded
<img [lazyLoad]="image" class="ng2-lazyloaded">
рдЖрдк рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/tjoskar/ng2-lazyload-image/blob/a227020c52af0fc30b6683e05c4f4a57f67b13ce/example/image.component.ts#L14 рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд░реЛрдд рдХреЛрдб: https://github.com /tjoskar/ng2-lazyload-image/blob/8e8f7d46ebad227c4584594b32d0ac9b1945a74e/src/lazyload-image.directive.ts#L77
рдЕрдЧрд░ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред
рдФрд░ рд╢рд╛рдпрдж рдХреБрдЫ рдСрдлрд╝рд▓рд╛рдЗрди рдХреИрд╢рд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛ред
рдЕрдЧрд░ рдЖрдк рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ;)
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдирд┐рд░реНрджреЗрд╢
window
рдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕реБрдиреЗрдВрдЧреЗ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВ рдмрддрд╛рддреЗ рд╣реИрдВред рдЬреЛ рдЖрдкрдХреЛionic
рдРрдкреНрд╕ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЖрдВрддрд░рд┐рдХ div рд╣реИ рдЬреЛ рд╕реНрдХреНрд░реЙрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИредрдЕрд░реНрдерд╛рдд
рдКрдкрд░ рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдФрд░ #2