在facebook网站上使用了什么样的javascript设计模式?

时间:2016-06-25 17:05:33

标签: javascript facebook design-patterns

我试着用Javascript设计模式来学习以改善我的练习,但我只是混淆了所有那些模式特别我发现在facebook脚本(学习)中使用的风格很简单,如果很容易使用,如果我非常了解这些设计模式,所以我想问一下这里的所有专家关于facebook与Javascript库一起使用的模式(反应js)如下代码

__d('StaticUFI.react',
    ['getElementPosition', 'getElementRect', 'getUnboundedScrollPosition',
    'shallowEqual', 'throttle'],
    function a(b, c, d, e, f, g, h, i) {
    'use strict';
    var j = c('UFIConstants').UFIFeedbackSourceType,
        k = c('UFIConstants').UFIStatus,
        l = c('React').PropTypes,
        m = c('React').createElement('div', {className: "UFICommentsLoadingSpinnerContainer _48pi UFIRow"},
            c('React').createElement(c('XUISpinner.react'), {size: 'large'})),
        n = c('React').createElement('div', {
            className: "_xtv",
            role: 'presentation'
        }, c('React').createElement('i', null)), o = c('React').createClass({
            displayName: 'StaticUFI',
            contextTypes: {dispatch: l.func},
            getInitialState: function () {
                var p = this.props.focusReply;
                return {focusReply: p, viewerHasClickedCommentComposer: false, viewerHasClickedSeeMore: false};
            },
            getDefaultProps: function () {
                return {
                    commentIDToFocusOnMount: null,
                    focusReply: null,
                    canReplyMap: {},
                    isActiveLoading: {},
                    repliesExpandedMap: {},
                    hasPagedToplevel: false,
                    viewerHasInteractedWithComments: false,
                    loadingSpamIDs: {}
                };
            },
            componentDidMount: function () {
                c('Arbiter').inform('UFI/displayDone-' + this.props.contextArgs.instanceid);
                if (this.props.feedback.isqanda && this.props.feedback.infinitescroll) {
                    var p = c('throttle')(this.loadMoreComments, 20);
                    this._scrollEventListener = c('Event').listen(window, 'scroll', p);
                    this._resizeEventListener = c('Event').listen(window, 'resize', p);
                }
                if (c('BlueBar').hasFixedBlueBar())this.setState({oldBoundingClientRect: c('getElementRect')(c('ReactDOM').findDOMNode(this))});
                this._resolveFocus();
            },
            loadMoreComments: function () {
                if (this.isMounted() && this.refs.topLevelBottomPager && !(this.props.contextArgs.ftentidentifier in this.props.isActiveLoading)) {
                    var p = c('ReactDOM').findDOMNode(this.refs.topLevelBottomPager),
                        q = c('getUnboundedScrollPosition')(window).y,
                        r = q + document.documentElement.clientHeight + c('UFIConstants').infiniteScrollRangeForQANDAPermalinks;
                    if (p.offsetHeight && p.offsetTop < r)this.refs.topLevelBottomPager.props.onPagerClick();
                }
            }
        });
    f.exports = o;
}, null);

0 个答案:

没有答案