magento 2 developer deep dive · demystifying code generation 2:30 – 3:00 andrey konosov magento...

120

Upload: others

Post on 29-May-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00
Page 2: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Magento 2 Developer Deep Dive

Ted Pietrzak

Head of Magento Technology

Page 3: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Innovation Create a new, unmatched platform

that delivers Agility

Scalability

Magento 2 Vision

Page 4: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Magento 2 Timeline

Q4 2014

Developer

Beta

Q1 2015

Developer

Release

Candidate

Q2 2015

Q4 2015

Merchant

General

Availability

Q3 2015

Merchant

Beta

Page 5: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

AM Session 1

Presenters Topics

10:00 – 10:30 Jonathan Atkins

Head of Product Design & UX

Magento 2 Admin UX and

Framework Changes

10:30 – 11:00 Olexii Korshenko

Magento Software Engineer

Introduction to Magento 2

Configuration

11:00 – 11:30 Vitaliy Korotun

Magento Software Architect

Migrating Your Theme to

Magento 2

11:30 – 12

noon

Andrey Konosov

Magento Software Architect

Migrating Merchant Data to

Magento 2

12 noon – 1:00 Lunch (on your own)

Page 6: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Break for Lunch 12 noon – 1 p.m.

Page 7: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Housekeeping

• Wi-Fi access:

• Network: #ImagineCommerce

• Password: Wynn2015

• Sessions will be recorded

• Please hold questions to the end of each session

• We will have a ‘parking lot’ for additional questions

• We will use the office hours from 5 – 6 p.m. for additional discussions

• Lunch is on your own today

Page 8: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

PM Session 2

Presenters Topics

1:00 – 1:30 Anton Kril

Magento Software Architect

Applying Code

Customizations – Part (1)

1:30 – 2:00 Eugene Tulika

Magento Software Engineer

Applying Code

Customizations – Part (2)

2:00 – 2:30 Sergii Shymko

Technical Support Engineer

Demystifying Code

Generation

2:30 – 3:00 Andrey Konosov

Magento Software Architect

Caching Optimization for

Magento Code Development

3:00 – 4:00 Break (Marketplace Grand Opening Reception (Latour)

Page 9: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Craig Hayman President, eBay Enterprise

Page 10: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Magento Sponsored Extension Challenge Winners!

Sergey Lysak, Eltrino

1st Place

Blanka Pham, Magestore

2nd Place

Maciej Ostrowski , Creatuity

3rd Place

Page 11: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Break

3 p.m. – 4 p.m.

Page 12: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

PM Session 3

Presenters Topics

4:00 - 4:30 Oleh Kobchenko

Manager, Software

Development

Magento 2 Performance and

Scalability

4:30 - 5:00 James Cowie Software Engineer

Session Digital

Allan MacGregor Magento Practice Lead, DEMAC

MEDIA

Joshua Warren CEO, Creatuity

Special Presentation

Refactoring into TDD / BDD

for the future

5:00 – 6:00 Open Office Hours

Page 13: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Special Presentation by Magento Community

Refactoring into TDD / BDD for the future

James Cowie Software Engineer, Session Digital

Allan MacGregor Magento Practice Lead, DEMAC MEDIA

Joshua Warren CEO, Creatuity

Page 14: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Magento 2 Office Hours 5 p.m. – 6 p.m.

Page 15: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00
Page 16: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Magento 2 Admin UX

Page 17: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Jonathan Atkins Head of Product Design & UX

Page 18: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Copyright © 2015 Magento, Inc. All Rights Reserved.

Magento®, eBay Enterprise™ and their respective logos are trademarks, service marks, registered trademarks, or registered service marks of eBay, Inc. or its subsidiaries. Other trademarks or service marks contained in this presentation are the property of the respective companies with which they are associated.

This presentation is for informational and discussion purposes only and should not be construed as a commitment of Magento, Inc. or eBay Enterprise (“eBay Enterprise”) or of any of their subsidiaries or affiliates. While we attempt to ensure the accuracy, completeness and adequacy of this presentation, neither Magento, Inc., eBay Enterprise nor any of their subsidiaries or affiliates are responsible for any errors or will be liable for the use of, or reliance upon, this presentation or any of the information contained in it. Unauthorized use, disclosure or dissemination of this information is expressly prohibited.

Legal Disclaimer

Page 19: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Prioritizing the Merchant Experience

Magento 2 represents a new approach to the Admin interface

Focused on creating a quality experience for non-technical users

Usability

Desirability

Accessibility

Page 20: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

New Look and Feel

Modern flat design

Touch friendly

Better accessibility

Improved usability

Page 21: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Touch Friendly

Larger click/tap targets

Removal of hover states

Easier to use on a wider

variety of screens

Touchscreen laptops

iPad

Surface

9”+ Android tablets

Page 22: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Navigation

Designed for modern

screen aspect ratios

More vertical space

for content

Touchable

Greater extensibility

Page 23: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Data Grids

Keyword search

Configurable columns

Inline editing

Expanding filters

Saved views

Drag and drop column

reordering

Sticky column headers

Simplified mass

actions

Page 24: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Filtering

Page 25: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Forms

New form element

types

Live field-level

validation

Dynamic capabilities

More consistent usage

throughout

Easier to read

Page 26: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Product Creation

Fewer templates!

New “Standard”

product template

Simple

Configurable

Virtual

Downloadable

Page 27: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Product Creation

Configuration creation

by attributes

Sub-process wizards

Page 28: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Product Creation

Bulk editing by attribute

Images

Pricing

Inventory

Page 29: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Content Staging

Create content in the

future!

Products

Promotions

CMS pages

Preview pages before

they launch

Page 30: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Pattern Library

Admin UX guidelines available

on GitHub

Pattern documents

Usage guidelines

.psd files

http://devdocs.magento.com/guides/v1.0/pattern-library/bk-pattern.html

Page 31: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Merchant Experience is a Priority

We need your help!

Sign up at Magento.com/research

Page 32: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Thank you!

Jonathan Atkins [email protected]

Q & A

Magento 2 Admin UX

Page 33: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00
Page 34: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Olexii Korshenko Senior PHP Developer, Magento 2

Page 35: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Magento 2 XML Configuration Files

Page 36: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Legal Disclaimer

Copyright © 2015 Magento, Inc. All Rights Reserved.

Magento®, eBay Enterprise™ and their respective logos are trademarks, service marks, registered trademarks, or registered service marks of eBay, Inc. or its subsidiaries. Other trademarks or service marks contained in this presentation are the property of the respective companies with which they are associated.

This presentation is for informational and discussion purposes only and should not be construed as a commitment of Magento, Inc. or eBay Enterprise (“eBay Enterprise”) or of any of their subsidiaries or affiliates. While we attempt to ensure the accuracy, completeness and adequacy of this presentation, neither Magento, Inc., eBay Enterprise nor any of their subsidiaries or affiliates are responsible for any errors or will be liable for the use of, or reliance upon, this presentation or any of the information contained in it. Unauthorized use, disclosure or dissemination of this information is expressly prohibited.

Page 37: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Agenda

1. Goals for Configuration Decomposition

2. Validation Strategy

3. Magento Config Component

4. How to create New Configuration Type

5. Benefits of configuration decomposition

6. QA

Page 38: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Goals for Configuration Decomposition

Page 39: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Goal #1

Overhead elimination in configuration loading

config.xml

Adminhtml

Frontend

Global

Store Event

…..

EAV Cache

….

Event Routes

….

events.xml

routes.xml

…..

events.xml

routes.xml

…..

Adminhtml Frontend

cache.xml

eav.xml

…..

Global

Page 40: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Configuration Types

Modules module.xml

System system.xml

ACL acl.xml

Store Config config.xml

Dependency Injection di.xml

Routes routes.xml

Layout layout.xml

Menu menu.xml

Page 41: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Goal #2

Separate configuration models

Mage_Core_Model_Config

Eav\Config

Routes\Config

Cache\Config

Event\Config

Page 42: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Goal #3

Application is independent from configuration storage and initial

format

….

DB

XML Reader

? Array

Application

Page 43: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Goal #4

Configuration data validation

Before After

No predefined format for

configuration files

Configuration File +

Schema Definition

Page 44: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Validation Strategy

Page 45: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

XML Schema Definition

• Each configuration file has a link to the schema definition in its declaration

• Schema definition for single file and for merged format

No code duplication. Use redefine instruction

Page 46: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Integrity Tests

XML File

Global Area

Global Area

Frontend

Area +

Validation of separate files

Per-area validation

Cross-area validation

Page 47: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Validation in Developer Mode

Run Time validation

Validation of each configuration file on the loading stage

No performance impact in Production Mode

Page 48: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Magento Config Component

Page 49: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Config Data Config Reader

File Resolver

Converter Schema Locator

Validation State

Magento Config. Component Structure

Page 50: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Config Data Config Reader

File Resolver

Converter Schema Locator

Validation State

Magento Config. Component Structure

Page 51: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Config Data Config Reader

File Resolver

Converter Schema Locator

Validation State

Magento Config. Component Structure

Page 52: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Config Data Config Reader

File Resolver

Converter Schema Locator

Validation State

Magento Config. Component Structure

Page 53: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

How to Implement New Configuration Type

Page 54: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

How to create new Configuration Type?

Step 1 Choose format of configuration type and create schema definition file(s) for it

Step 2 Decide whether your configuration is scoped or non-scoped

Step 3 Provide implementations of required interfaces

Page 55: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Config Data Config Reader

File Resolver

Converter Schema Locator

Validation State

Magento Config Component Structure

Page 56: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

1 of 4 Schema Locator

Provide paths to corresponding schema file(s)

List of interfaces that must be implemented

Page 57: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

2 of 4 Config Converter

Convert DOMDocument to array

XML Array

List of interfaces that must be implemented

Page 58: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

3 of 4 Configuration Reader

List of interfaces that must be implemented

Page 59: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

4 of 4 Config Data

Configuration is Scoped or Non-Scoped?

Inject implementation of configuration reader

Extend corresponding class

Global Frontend Global

Non-Scoped Scoped

OR

List of interfaces that must be implemented

Page 60: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Benefits of Magento 2 Configuration

Page 61: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Benefits of Magento 2 Configuration

Simple creation flow of new configuration type

Extensibility of configuration component

Configuration scopes

Optimization in configuration loading

Same but separate mechanisms for all configuration types

Validation of configuration data

Documented configuration format

Page 62: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Thank you!

Olexii Korshenko [email protected]

Q & A

Magento 2 XML Configuration Files

Page 63: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00
Page 64: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Migrating Your Theme to Magento 2

Page 65: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Vitalii Korotun Architect, Magento

Page 66: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Legal Disclaimer

Copyright © 2015 Magento, Inc. All Rights Reserved.

Magento®, eBay Enterprise™ and their respective logos are trademarks, service marks, registered trademarks, or registered service marks of eBay, Inc. or its subsidiaries. Other trademarks or service marks contained in this presentation are the property of the respective companies with which they are associated.

This presentation is for informational and discussion purposes only and should not be construed as a commitment of Magento, Inc. or eBay Enterprise (“eBay Enterprise”) or of any of their subsidiaries or affiliates. While we attempt to ensure the accuracy, completeness and adequacy of this presentation, neither Magento, Inc., eBay Enterprise nor any of their subsidiaries or affiliates are responsible for any errors or will be liable for the use of, or reliance upon, this presentation or any of the information contained in it. Unauthorized use, disclosure or dissemination of this information is expressly prohibited.

Page 67: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

01. Magento 2 Overview: Theme Technologies and Techniques

Page 68: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Granularity due to Modularity

Page 69: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Directory Structure M1 M2

Page 70: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Diversity

Page 71: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

JavaScript Technologies and Techniques

Page 72: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

RequireJS

define(["jquery", "jquery/ui", "domReady!"],

function ($) {

'use strict';

// your business logic here

}

);

Page 73: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Inline JavaScript

<script type="text/javascript">

var submitButtons = $$('.submit-button'), updateButtons = $$('.update-button'), fields = $$('.qty-input');

updateButtons.each(function (elem) { elem.disabled=true; elem.addClassName('disabled');});

for (var i=0;i<fields.length;i++) {

fields[i].observe('change', checkButtonsRelation); fields[i].baseValue = fields[i].value;

}

function checkButtonsRelation() {

var hasChanges = false;

fields.each(function (elem) {

if (elem.baseValue != elem.value) hasChanges = true;

}.bind(this));

if (hasChanges) {

submitButtons.each(function (elem) {elem.disabled=true; elem.addClassName('disabled');});

updateButtons.each(function (elem) {elem.disabled=false; elem.removeClassName('disabled');});

} else {

submitButtons.each(function (elem) {elem.disabled=false; elem.removeClassName('disabled');});

updateButtons.each(function (elem) {elem.disabled=true; elem.addClassName('disabled');});

}

}

function submitCreditMemo() {

if ($('creditmemo_do_offline')) $('creditmemo_do_offline').value=0;

editForm.submit()

}

function submitCreditMemoOffline() {

if ($('creditmemo_do_offline')) $('creditmemo_do_offline').value=1;

editForm.submit()

}

var sendEmailCheckbox = $('send_email');

if (sendEmailCheckbox) {

var notifyCustomerCheckbox = $('notify_customer');

var creditmemoCommentText = $('creditmemo_comment_text');

Event.observe(sendEmailCheckbox, 'change', bindSendEmail);

bindSendEmail();

}

function bindSendEmail() {

if (sendEmailCheckbox.checked == true) {

notifyCustomerCheckbox.disabled = false;

} else {

notifyCustomerCheckbox.disabled = true;

}

}

</script>

<div data-mage-init= '{"creditMemoForm":{“config”:”value”}}'>

<div>

require(['jquery', 'prototype'], function (jQuery) {

var submitButtons = $$('.submit-button'),

updateButtons = $$('.update-button'),

fields = $$('.qty-input');

updateButtons.each(function (elem) {

elem.disabled=true; elem.addClassName('disabled');

});

for (var i=0;i<fields.length;i++) {

fields[i].observe('change', checkButtonsRelation);

fields[i].baseValue = fields[i].value;

}

});

Magento/Sales/view/adminhtml/web/js/creditMemoForm.js

M1

template/sales/order/creditmemo/create/items.phtml

Page 74: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

JavaScript Extension

<div id="toolbar" data-mage-init='{"toolbarEntry": {}}'>

</div>

// somewhere in your custom template

<script type="text/x-magento-init">

{

“#toolbar": {

“toolbarEntry": {

“option”: “value”

},

“otherWidget”: {}

}

}

</script>

Page 75: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Layouts, Block and Templates

Page 76: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Layout Files

frontend/rwd/default/layout/catalog.xml Magento/Catalog/view/frontend/layout

M1 M2

Page 77: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Blocks and Templates

class Mage_Catalog_Block_Product_View

{

public function getProduct();

public function hasOptions();

public function hasRequiredOptions();

public function getAddToCartUrl();

public function getJsonConfig();

public function isStartCustomization();

public function getProductDefaultQty();

public function canEmailToFriend();

}

namespace Magento\Catalog\Block\Product; class View { public function getProduct(); public function hasOptions(); public function hasRequiredOptions(); public function getAddToCartUrl(); public function getJsonConfig(); public function isStartCustomization(); public function getProductDefaultQty();

public function getWishlistOptions(); public function shouldRenderQuantity(); public function getQuantityValidators(); }

Page 78: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

UI Library and CSS

Page 79: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Magento UI Library

• Upgradability

• Consistency

• Extensive list of reusable components

• Styling and design best practices

• Simplifies customization

Page 80: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Magento UI Library Documentation

lib/web/css/docs

Page 81: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

CSS Pre-processors

Page 82: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

02. Web Developer Workflows CSS pre-processing

Page 83: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

WEB Developer Workflows

Basic: with built-in CSS pre-processor

Standard: with client-side CSS pre-processor

Advanced: with node.js CSS pre-processor

Page 84: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Oyejorge PHP library

~40 seconds to compile CSS

Manual actions to re-compile

Server side PHP pre-processor (with PHP)

Page 85: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

less.js official script

~10 seconds to compile CSS

No actions to re-compile

Client side CSS pre-processor (with less.js)

Page 86: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Command line script (lessc)

~7 seconds to compile CSS

Automatic browser refresh on change in LESS

Server side CSS pre-processor (with node.js)

Page 87: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Summary

Page 88: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Development Efforts

Existing M1 experience

Pass M2 Training

1st Module M1 + 50 %

2nd Module M1 + 20%

3rd Module M2 =< M1

Page 89: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Thank you!

Vitalii Korotun [email protected]

Q & A

Migrating Your Theme to Magento 2

Page 90: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00
Page 91: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Andrey Konosov Architect, Magento 2

Page 92: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Migrating Merchant

Data to Magento 2

Page 93: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

• Data structure • How migration tool work • How to customize migration process • Migration workflow

Page 94: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Legal Disclaimer

Copyright © 2015 Magento, Inc. All Rights Reserved.

Magento®, eBay Enterprise™ and their respective logos are trademarks, service marks, registered trademarks, or registered service marks of eBay, Inc. or its subsidiaries. Other trademarks or service marks contained in this presentation are the property of the respective companies with which they are associated.

This presentation is for informational and discussion purposes only and should not be construed as a commitment of Magento, Inc. or eBay Enterprise (“eBay Enterprise”) or of any of their subsidiaries or affiliates. While we attempt to ensure the accuracy, completeness and adequacy of this presentation, neither Magento, Inc., eBay Enterprise nor any of their subsidiaries or affiliates are responsible for any errors or will be liable for the use of, or reliance upon, this presentation or any of the information contained in it. Unauthorized use, disclosure or dissemination of this information is expressly prohibited.

Page 95: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

01. Website Data

Page 96: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

MEDIA TEMPORARY CUSTOM

CORE DATA

Data Structure

Page 97: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

MEDIA TEMPORARY CUSTOM

CORE DATA

Data Structure

Page 98: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

MEDIA TEMPORARY CUSTOM

CORE DATA

Data Structure

Page 99: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

02. Migration Tool

Page 100: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Load Transform

Migration Tool

Magento 1

Extract

Magento 2

Magic

Page 101: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Tool Structure

1. Attributes 2. Custom 100. Map

Page 102: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Tool Structure

1. Attributes 2. Custom 100. Map

Integrity check

Migration

Volume check

Page 103: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

03. Customization

Page 104: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Map Customizations

MAJORITY of tables could be migrated

USING MAP

Page 105: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Map

<ignore> <move> <transform>

*Default action is copy

Page 106: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Load Transform

Transformation Handlers

Magento 1

Extract

Magento 2

serialize

json

string replace

values map

Page 107: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

4. Step

Custom Steps

1. Step 2. Step 3. Custom 5. Step

Page 108: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

04. Workflow

Page 109: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Workflow

Page 110: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Workflow

1

INSTALL THE SOFTWARE

Page 111: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Workflow

2

MIGRATE SETTINGS, WEBSITES

Page 112: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Workflow

3

CUSTOMIZE YOUR MAGENTO 2

Page 113: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Workflow

4

FREEZE STORE ON MAGENTO 1

Storefront usage

Orders management

Products management

Content management

Page 114: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Workflow

5

LAUNCH THE MAGIC TOOL

Page 115: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Workflow

6

DELIVER INCREMENTAL DATA

Page 116: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Workflow

7

SHUTDOWN MAGENTO 1 WEBSITE

Page 117: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Workflow

8

REFRESH TEMPORARY DATA

>./magento indexer:all cache warmup

Page 118: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Workflow

9

OPEN MAGENTO 2 STORE

Page 119: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Numbers

1000/min 1200/min 15500/min

Virtual Box VM, CentOS 6, 2.5Gb RAM, CPU 1 core 2.6GHz

Page 120: Magento 2 Developer Deep Dive · Demystifying Code Generation 2:30 – 3:00 Andrey Konosov Magento Software Architect Caching Optimization for Magento Code Development 3:00 – 4:00

Thank you!

Credits: Icons designed by Freepik

Andrey Konosov [email protected]

Q & A

Migrating Merchant Data to Magento 2